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 に factory 宣言を入れようとしましたが、うまくいきません。なぜこうなった?zf2では、このコードは問題ありません...

それが重要な場合は、composer を使用します。

更新:私の最終的な構成では、次のものがあります。

'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'これが問題だと思います。

4

1 に答える 1