Edit: Um Verwirrung zu vermeiden, ist diese Frage zu Entity Listener und nicht überEvent ListenerSymfony/Lehre EventSubscriber vs EntityListener
I Symfony Ereignisse am Lernen und darüber nachdachte, wie EntityListeners und EventSubscribers Arbeit.
Wie ich verstehe, ist EntityListener nur an eine Entität angeschlossen, während EventSubscriber-Methoden für alle Entitäten aufgerufen werden. Schließlich in der EventSubscriber Klasse muss ich etwas tun, wie folgt aus:
public function prePersist(LifecycleEventArgs $args)
{
$object = $args->getObject();
if ($object instanceof xxxxxxx) {
$this->doSomething();
}
}
So scheint es, dass, wenn ich auf Ereignisse einer einzigen Einheit zu hören brauchen, sollte ich EntityListener verwenden, und wenn ich auf Ereignisse hören wollen Von allen Doctrine-Entitäten sollte ich einen EventSubscriber verwenden.
Aber ... Blick auf die beliebtesten Bundles, wie FOSUserBundle, VichUploaderBundle, SonataMediaBundle, etc, sie alle verwenden EventSubscriber-Schnittstelle und keiner von ihnen verwenden EntityListener. Auch wenn sie nur auf eine Einheit hören müssen.
Ich habe noch kein Bündel gesehen, das EntityListener verwenden würde.
Meine Frage ist: warum?
Aus meiner Sicht sollte EntityListener effizienter sein, da es nur für eine einzelne Entität ausgelöst wird. Anrufen sagen 20 Voraktualisierung Abonnenten für jede Entität Update scheint nicht sehr optimiert?
Sie sicher Sind Sie beziehen sich auf EntityListener und nicht EventListener? EntityListener scheint in Symfony 2.4 – Karolis
hinzugefügt worden zu sein Sie mischen Dinge. EntityListener ist nicht EventListener/EventSybcriber. Sie arbeiten auf verschiedenen Ebenen der Lehre.Überprüfen Sie meine aktualisierte Antwort. –