<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
class Person {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function __get($prop) {
return $this->data[$prop];
}
}
$data = array('name' => 'Mark');
$person = new Person($data);
echo $person->get('name');
?>
Разве это не должно работать?
я получил Fatal error: Call to undefined method Person::get()
но я не знаю почему. Согласно документации для магических методов, этот код должен работать нормально.
http://php.net/manual/en/language.oop5.overloading.php#object.get
Пытаться
echo $person->name;
вместо.
Это магия метода __get magic 🙂
На всякий случай вы можете определить
public function __call( $name, $arguments ) {
echo $name;
// do something useful
}
а затем сделать магические звонки, как это:
$person->someMethod(); // echoes "someMethod"
Других решений пока нет …