我想在我的 ZF2 项目中将学说实体管理器放入许多不同的类中。因此。我在我的中设置了以下初始化程序Module.php
:
'initializers' => array(
function ($instance, $services) {
if (is_object($instance)) { // just for debugging
var_dump(get_class($instance));
}
if (!$instance instanceof EntityManagerAwareInterface) {
return;
}
$entityManager = $services->get('doctrine.entitymanager.orm_default');
$instance->setEntityManager($entityManager);
},
),
)
AuthController
然而,即使我正在访问该控制器的站点(并获得空指针异常,因为未设置实体管理器),它也永远不会被调用。当然,控制器确实实现了所需的接口:
class AuthController extends AbstractActionController implements EntityManagerAwareInterface
还有什么我必须配置的,以便AuthController
根据初始化程序闭包检查我的吗?
目前我把它放在invokables下module.config.php
。
'controllers' => array(
'invokables' => array(
'Auth\Controller\Auth' => 'Auth\Controller\AuthController',
),
),
当我从那里删除它时,应用程序无法再找到该类。
我的调试输出列出了根据初始化程序、许多管理器和服务检查的其他类。一小段摘录:
string(37) "Zend\\Mvc\\Controller\\ControllerManager"
string(33) "Zend\\Mvc\\Controller\\PluginManager"
string(29) "Zend\\View\\HelperPluginManager"
[...]
string(24) "Doctrine\\DBAL\\Connection"
string(26) "Doctrine\\ORM\\EntityManager"
string(41) "Zend\\Authentication\\AuthenticationService"