我使用zend框架2。不要在每次行动中都重复自己。我为dbAdapter编写了getter/setter。我想在控制器的构造函数中实例化db适配器。要创建db适配器的实例,我执行
$this->getServiceLocator( ) )->get( 'Zend'Db'Adapter'Adapter' ) )
但是如果我在构造函数中调用它,servicelocator将为NULL
$this->getServiceLocator( ) )
我该怎么做呢?
调用__construct
方法后设置服务定位器。所以$serviceLocator
永远不会在__construct
时刻被设定。
点击这里阅读更多内容
https://juriansluiman.nl/article/139/zf2-why-a-service-is-not-available-in-your-constructor您需要为您的服务编写一个工厂,而不仅仅是将其配置为可调用的。使用构造函数注入
class MyService
{
protected $myDependency;
public function __construct(MyDependency $myDependency)
{
$this->myDependency = $myDependency;
}
}
最快的方法是在适当的module.php文件
public function getServiceConfig()
{
return [
'factories' => [
'myService' => function($serviceManager) {
return new MyService($serviceManager->get('myDependency'));
}
]
];
}