PHP メンバアクセス制限

C++では、Piyoインスタンスでfuncを呼び出せば、hello!が出力される。

class Hoge {
public:
	virtual ~Hoge () {
		// do nothing
	}
	void func () {
		a ();
	}
private:
	void a () {
		throw "boo!";
	}
};

class Piyo : public Hoge {
private:
	void a () {
		print ("hello!");
	}
}

PHP では、protected でなければ関数が見つけられない。
さらに、親と子は同じアクセス制限にする必要がある。

class Hoge {
	public function func () {
		$this->a ();
	}
	protected function a () {
		throw new BadMethodCallException ();
	}
};

class Piyo : public Hoge {
	protected function a () {
		print ("hello !");
	}
}