我有一个问题是出于对Doctrine2内部运作的好奇心。我作为一个用户看到了一个非常干净和强大的界面,但必须有一些重要的魔术在幕后工作。
当我生成一个简单的实体时,它看起来像这样:
class SimpleEntity
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $title;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set title
*
* @param string $title
*/
public function setTitle($title)
{
$this->title = $title;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
}
正如您将注意到一件事显然不存在,没有办法设置id,但是学说工厂返回带有set id的实体。这怎么可行?我试图查看来源,但在某个地方丢失了轨道。
如何在不在类层次结构中的情况下覆盖受保护的值?
答案 0 :(得分:4)