看进学说EventManager,特别是postLoad生命周期事件,这是由eventmanager进行每一个实体从数据库加载时间发射。
要将它全部整合到ZF2中,您需要做几件事情。
首先,写一个学说味的事件侦听器:
<?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));
}
什么你想要注入吗?我无法想象一个将某些东西注入实体的情况。我确信有一种方法可以做到你想要的东西符合这个概念。 –
在此期间,我采取了另一个方向。我想委托给实体本身的事物现在被委托给管理这些实体的服务。因此,不需要再向实体注入某些东西 – griesi