为什么我的吸气剂不起作用?

时间:2014-10-30 11:23:39

标签: php getter

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

1 个答案:

答案 0 :(得分:4)

尝试

echo $person->name;

代替。

这是__get魔法的神奇之处: - )

以防万一,您可以定义

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

然后进行类似的魔术调用:

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