Zend framework2 如何在模型中使用getServiceLocator?
我正在尝试创建一个连接到DB的模型,但我需要使用适配器。我试图使用Zend framework2 如何在模型中使用getServiceLocator?,zend-framework2,Zend Framework2,我正在尝试创建一个连接到DB的模型,但我需要使用适配器。我试图使用$this->getServiceLocator()->get('AdapterDb'),在控制器中工作正常,但在模型中工作不正常。假设您的模型名称是Auth模块中的DBConnect。 因此它被放置在文件夹路径Auth\Model\DBConnect中 在Auth模块的module.php中,必须定义getServiceConfig函数。 如果没有,那么先了解一下。 这是一个注册服务、注入任何依赖项等的函数 在此处注册您的模型,
$this->getServiceLocator()->get('AdapterDb')
,在控制器中工作正常,但在模型中工作不正常。假设您的模型名称是Auth
模块中的DBConnect
。
因此它被放置在文件夹路径
Auth\Model\DBConnect
中
在Auth
模块的module.php
中,必须定义getServiceConfig
函数。
如果没有,那么先了解一下。
这是一个注册服务、注入任何依赖项等的函数
在此处注册您的模型,并注入所需的AdapterDb
依赖项-
namespace Auth;
use Auth\Model\DBConnect;
class Module {
....
.....
public function getServiceConfig() {
return array(
'factories' => array(
....
.....
'Auth\Model\DBConnect' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$model = new DBConnect();
$model->setDbAdapter($dbAdapter);
return $model;
},
)
)
}
}
此处setDbAdapter
函数用于设置值,因此模型中应该有可用的函数
在DBConnect模型中-
namespace Auth\Model;
class DBConnect {
...
....
protected $_dbAdapter;
public function setDbAdapter($dbAdapter) {
$this->_dbAdapter = $dbAdapter;
}
public function getDbAdapter() {
return $this->_dbAdapter;
}
......
}
现在使用$this->getDbAdapter()
获取所需的适配器
我知道这不是最好的解决办法。它很好用
我希望它能帮助一些人。创建单音-在你需要的任何地方使用(但这可能不是最好的解决方案)我真的希望我能否决上面的评论,请不要创建单音+一个好的答案,并且在他们的问题上比OP投入更多的时间