У меня странное поведение с базой данных Custom Factory.
Например, я хочу использовать 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'
но я думаю в этом проблема.
'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',
),
),
Других решений пока нет …