Почему мой геттер не работает?

<?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

0

Решение

Пытаться

echo $person->name;

вместо.

Это магия метода __get magic 🙂

На всякий случай вы можете определить

public function __call( $name, $arguments ) {
echo $name;
// do something useful
}

а затем сделать магические звонки, как это:

$person->someMethod(); // echoes "someMethod"
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]