【发布时间】:2018-09-19 07:53:29
【问题描述】:
正如我们在official documentation 中看到的那样,Doctrine 实现了实体侦听器,这些侦听器仅在特定实体发生某些事情时执行。
但是,生命周期事件侦听器/订阅者和实体侦听器之间存在不同的注入。事实上,对于侦听器/订阅者,Doctrine 仅将 LifecycleEventArgs 对象注入到定义的回调中
// Event listener/subscriber
public function postUpdate(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
}
这让你无论如何都可以访问实体,但是在实体监听器中,实体也被显式注入作为第一个参数
// Entity listener
public function postUpdate(object $entity, LifecycleEventArgs $args)
{
$entity2 = $args->getEntity();
}
它仍然在$args 中可用。这也在文档中报告:
一个实体监听方法接收两个参数,实体实例 和生命周期事件。
但是,实体侦听器中$entity 和$args->getEntity() 之间究竟有什么区别?
【问题讨论】:
标签: php symfony doctrine-orm