[英]How To Access to Global Confin within Model Class in ZF2
我想訪問模型中全局配置文件中設置的數據庫配置。 在ZF2控制器中,我們可以使用getServiceLocator
方法加載配置,但是如何在Model類中執行此操作? 這是我的模型課:
class BaseModel extends AbstractTableGateway
{
public function __construct()
{
$this->adapter = new Adapter(array(
'driver' => 'Pdo_Mysql',
'database' => 'mydbname',
'username' => 'root',
'password' => 'root'
));
}
}
我只想加載“ db”數組配置(位於全局配置文件中),並用此輸入數組替換為Adapter類的輸入參數。
這是我的全局配置文件:
return array(
"db" => array(
"driver" => "Pdo_Mysql",
"dsn" => "mysql:dbname=mydbname;host=localhost",
"username" => "root",
"password" => "root"
),
"service_manager" => array(
"factories" => array(
"dbFactory" => "Zend\Db\Adapter\AdapterServiceFactory",
)
)
);
如果您需要修改DbAdapter
配置(您要連接的數據庫),則需要創建適配器的其他實例,然后將適配器注入到“模型”中
class FooModel extends AbstractTableGateway
{
public function __construct($dbAdapter)
{
$this->adapter = $adapter;
}
}
然后創建適配器服務工廠
public function getServiceConfig()
{
return array(
'factories' => array(
// Standard database adapter
'dbAdapter1' => function($sm) {
$config = $sm->get('config');
return new \Zend\Db\Adapter\Adapter($config['db']);
},
// Another db adapter using different config
'dbAdapter2' => function($sm) {
$config = $sm->get('config');
return new \Zend\Db\Adapter\Adapter($config['db2']);
},
// The model that requires a different database
// adapter to be injected
'FooModel' => function($sm) {
$adapter = $sm->get('dbAdapter2');
return new Model\FooModel($adapter);
},
),
);
}
然后,您可以將所有配置添加到global或module.config.php
的db2
鍵中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.