Doctrine EventManager、特にエンティティがデータベースからロードされるたびに EventManager によって起動される postLoadライフサイクル イベントを調べます。
すべてを ZF2 に接続するには、いくつかのことを行う必要があります。
まず、Doctrine-Flavored イベントリスナーを書きます:
<?php
class InjectStuffListener {
private $sl;
public function __construct($serviceLocator){
$this->sl = $serviceLocator;
}
public function postLoad($eventArgs){
$entity = $eventArgs->getEntity;
$entity->setThingToBeInjected($this->sl->get('some.thing'));
}
}
次に、いくつかの Module.php のような場所で (onBootstrap よりも適切な場所があるかもしれませんが、何でも):
<?php
public function onBootstrap(){
$sm = $e->getApplication()->getServiceManager();
$em = $sm->get('doctrine.entitymanager.orm_default');
$dem = $em->getEventManager();
$dem->addEventListener(array( \Doctrine\ORM\Events::postLoad ), new InjectStuffListener( $sm ) );
}