2016-11-10 47 views
1

我有奇怪的行爲與數據庫自定義工廠。zf3自定義數據庫工廠不想應用

比如我想使用BjyProfiler創造1點的配置是這樣的:

'db' => array(
    'driver' => 'Pdo', 
    'dsn' => 'mysql:dbname=framework;host=localhost', 
    'username' => 'root', 
    'password' => '', 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
    ), 
), 
'service_manager' => array(
    'factories' => array(
     'Zend\Db\Adapter\Adapter' => 'Database\Adapter\MainAdapterFactory', 
    ), 
), 

所以使用Zend的\ DB I加入modules.config.php 「Zend的\ DB」(模塊,否則我得到例外)。問題是,當我想獲得「Zend \ Db \ Adapter \ Adapter」時,它永遠不會經過「Database \ Adapter \ MainAdapterFactory」,我不知道爲什麼......它使用一些默認的Adapter。我會在global.php,local.php中發佈工廠聲明,但它不起作用。這是爲什麼發生?在zf2這個代碼是好的...

我使用作曲家如果重要。

更新:在我的最後設置我有:

'service_manager' => 
    array (size=5) 
     'aliases' => 
      array (size=11) 
      ... 
      'Zend\Db\Adapter\Adapter' => string 'Zend\Db\Adapter\AdapterInterface' (length=32) 
      ... 
     'factories' => 
      array (size=19) 
      ... 
      'Zend\Db\Adapter\AdapterInterface' => string 'Zend\Db\Adapter\AdapterServiceFactory' (length=37) 
      ... 
      'Zend\Db\Adapter\Adapter' => string 'Database\Adapter\Factory\MainAdapterFactory' (length=43) 
     'abstract_factories' => 
      array (size=3) 
      ... 
      1 => string 'Zend\Db\Adapter\AdapterAbstractServiceFactory' (length=45) 
      ... 
    ... 

我不知道它是從哪裏來的別名'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterInterface'但我認爲這就是問題所在。

回答

0

'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterInterface'來自框架。

我建議你擴展了原有'Zend\Db\Adapter\Adapter'用自己的適配器(姑且稱之爲MyAdapter),並使用您的自定義適配器:

'service_manager' => array(
    'factories' => array(
     'Zend\Db\Adapter\MyAdapter' => 'Database\Adapter\MainAdapterFactory', 
    ), 
), 
+0

這是問題,是的。我忘了添加答案。謝謝! – Botman