Matt Zandstraは、彼のテキスト「PHP Objects Patterns and Practice」で、__ get()メソッドを説明するために次の例を示しています。
class Person {
function __get( $property ) {
$method = "get{$property}";
if ( method_exists( $this, $method ) ) {
return $this->$method();
}
}
function getName() {
return "Bob";
}
function getAge() {
return 44;
}
}
実際には、そのような静的な値を返すためにそのようなメソッド(getNameおよびgetAge)を実際に作成することは決してないことはわかっていますが、代わりに、オブジェクトにnameプロパティとageプロパティを作成し、$this演算子を使用してそれらを返します。
私の質問は、この例が実際に有用性を示しているかどうかです。そうでない場合、誰かが同じ種類の目的で__get()を使用する理由のより良い例を提供できますか?
尋ねる理由
オブジェクトでnameプロパティとageプロパティを使用する場合、これらのプロパティを次のように取得しようとするため、__ get()関数は実行されません。
$person = new Person();
$name = $person->name;
nameプロパティがパブリックの場合は実際に返されるか、プライベートまたは保護されている場合は可視性エラーが発生します。__get()関数は、これらの「実際の」ケースのいずれでも実行されません...何かが足りませんか?
上記のコードが機能することを十分に認識しています。私はそれが実際的な例であるとは確信していません。