簡體   English   中英

如何在ZF2的模型類中訪問Global Confin

[英]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.phpdb2鍵中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM