まず、クラス定義内のプロパティ名を検索し、その値を返そうとします。プロパティがない場合 - PHPは__get($ var)を呼び出そうとしますが、ここでは必要なものを返すことができます。これは、Javaのようなゲッタ/セッタを知っている人にとっては、アクセスしたいすべてのクラスメンバのためにそれらを定義する必要がある人にとっては、少し混乱します。
それは、Javaのようなゲッター/セッターを使用するように快適です - あなたはこのような何か書くことがあります。
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!';
出典
2009-05-22 09:59:49
Jet
これは、__isset()のオーバーロードで処理できます。 –