Symfony 4原则LifecycleEventArgs getEntity()与getObject()

时间:2018-11-15 11:42:58

标签: php symfony doctrine-orm doctrine symfony4

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...
    }
}

据我所知,这两种方法都返回完全相同的 object ,即它们指向给定实体的相同实例。

总是这样吗?

应该用一个代替另一个吗?

1 个答案:

答案 0 :(得分:2)

没有区别。 getObject()方法来自LifecycleEventArgs包提供的doctrine/persistence类的父类。

当您要为多个Doctrine实现(例如ORM和ODM)构建集成层,并且在这种情况下,您将使用getObject()时,基本事件类非常有用。