Symfony 4 Doctrine LifecycleEventArgs getEntity() 与 getObject()
Symfony 4 Doctrine LifecycleEventArgs getEntity() vs getObject()
LifecycleEventArgs::getObject()
和LifecycleEventArgs::getEntity()
有什么区别?
namespace App\EventListener;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Events;
/**
* Class MyListener
*
* @package App\EventListener
*/
class MyListener implements EventSubscriber
{
/**
* @return array|string[]
*/
public function getSubscribedEvents()
{
return [
Events::postUpdate,
];
}
/**
* @param LifecycleEventArgs $event
*/
public function postUpdate(LifecycleEventArgs $event)
{
$entity = $event->getEntity();
$object = $event->getObject();
$entity === $object; //true...
}
}
据我所知,这两个方法 return 完全相同 object,即它们指向给定实体的相同实例。
总是这样吗?
应该用一个代替另一个吗?
没有区别。 getObject()
方法来自 LifecycleEventArgs
class 的父 class,由 doctrine/persistence
包提供。
基础事件 class 主要用于为多个 Doctrine 实现(例如 ORM 和 ODM)构建集成层,在这种情况下您将使用 getObject()
.
LifecycleEventArgs::getObject()
和LifecycleEventArgs::getEntity()
有什么区别?
namespace App\EventListener;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Events;
/**
* Class MyListener
*
* @package App\EventListener
*/
class MyListener implements EventSubscriber
{
/**
* @return array|string[]
*/
public function getSubscribedEvents()
{
return [
Events::postUpdate,
];
}
/**
* @param LifecycleEventArgs $event
*/
public function postUpdate(LifecycleEventArgs $event)
{
$entity = $event->getEntity();
$object = $event->getObject();
$entity === $object; //true...
}
}
据我所知,这两个方法 return 完全相同 object,即它们指向给定实体的相同实例。
总是这样吗?
应该用一个代替另一个吗?
没有区别。 getObject()
方法来自 LifecycleEventArgs
class 的父 class,由 doctrine/persistence
包提供。
基础事件 class 主要用于为多个 Doctrine 实现(例如 ORM 和 ODM)构建集成层,在这种情况下您将使用 getObject()
.