首页 文章

zf3自定义数据库工厂不想申请

提问于
浏览
1

我对数据库自定义工厂有奇怪的行为 .

例如,我想使用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我在modules.config.php“Zend \ Db”中添加了模块(否则我得到例外) . 问题是,当我想要“Zend \ Db \ Adapter \ Adapter”时,它永远不会通过“Database \ Adapter \ MainAdapterFactory”,我不知道为什么......它使用一些默认的适配器 . 我试图将工厂声明放在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' 但我认为这是问题所在 .

1 回答

  • 0

    'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterInterface' 来自框架 .

    我建议你用自己的适配器(让我们称之为 MyAdapter )扩展原始 'Zend\Db\Adapter\Adapter' ,并使用你的自定义适配器:

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

相关问题