我读到了一个神奇的 getter 和 setter 函数,它取代了大量的标准 getter 和 setter。(链接)
我更改了 Miles 的功能,因为我正在使用AnnotationForms
并且不希望在变量中使用下划线,例如$_name
. 我更新了魔术功能,但是当我尝试调用时,getName()
我得到:
致命错误:调用未定义的方法... Entity::getName()
这是我的代码:
<?php
namespace Entity;
use Doctrine\ORM\Mapping as ORM;
use Zend\Form\Annotation as Form;
/**
* @ORM\Entity
* @ORM\Table(name="masterdata_entity")
* @Form\Name("entity")
* @Form\Attributes({ "class": "form-horizontal" })
* @Form\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty")
*/
class Entity
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @Form\Exclude()
*/
protected $id;
/**
* @ORM\Column(type="string")
* @Form\Filter({"name":"StringTrim"})
* @Form\Validator({"name":"StringLength", "options":{"min":1, "max":50}})
* @Form\Attributes({"type":"text"})
* @Form\Options({"label":"Name"})
*/
protected $name;
public function __get($property) {
return (isset($this->{$property}) ? $this->{$property} : null);
}
public function __set($property, $value) {
if (isset($this->{$property})) {
$this->{$property} = $value;
}
}
public function __isset($property) {
return isset($this->{$property});
}
}
任何想法为什么会这样以及我如何解决它?