まず、PHP はクラス定義でプロパティ名を検索し、その値を返そうとします。プロパティがない場合、PHP は __get($var) を呼び出そうとします。ここでは、必要なものを何でも返すことができます。これは、アクセスするすべてのクラス メンバーに対して定義する必要がある Java のようなゲッター/セッターを知っている人にとっては、少し混乱する動作です。
Java のような getter/setter を使用するのが快適な場合は、次のように記述できます。
public function __set($var, $value)
{
if (method_exists($this, $method = "_set_" . $var))
{
call_user_func(array($this, $method), $value);
}
}
public function __get($var)
{
if (method_exists($this, $method = "_get_" . $var))
{
return call_user_func(array($this, $method), $value);
}
}
次に、カスタムゲッター/セッターを定義してこのコードを使用します
protected function _get_myValue()
{
return $this->_myValue;
}
protected function _set_myValue($value)
{
$this->_myValue = $value;
}
この方法で定義済みのメソッドにアクセスします。
$obj->myValue = 'Hello world!';