依存性注入コンテナZend\Di
を使用してください。 ZfcUserプロジェクトは、いくつかの作業コードを掘り下げたい場合にこれを行います。
代わりに、基本的なアプローチは、このようなものである(未テストコードが!):
まず:データベース接続情報注入するDIを設定:
設定/オートロードし/ local.config.php。
:
<?php
return array(
'di' => array(
'instance' => array(
'Zend\Db\Adapter\Adapter' => array(
'parameters' => array(
'driver' => 'Zend\Db\Adapter\Driver\Pdo\Pdo',
),
),
'Zend\Db\Adapter\Driver\Pdo\Pdo' => array(
'parameters' => array(
'connection' => 'Zend\Db\Adapter\Driver\Pdo\Connection',
),
),
'Zend\Db\Adapter\Driver\Pdo\Connection' => array(
'parameters' => array(
'connectionInfo' => array(
'dsn' => "mysql:dbname=mydatabasename;host=localhost",
'username' => 'myusername',
'password' => 'mypassword',
'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''),
),
),
),
),
),
);
第二に、あなたのモジュールのmodule.config.php
ファイル内、マッパーにアダプタを注入
モジュール/マイ/設定/ module.config.php:
<?php
return array(
'di' => array(
// some config info...
'My\Model\ManagerAbstract' => array(
'parameters' => array(
'adapter' => 'Zend\Db\Adapter\Adapter',
),
),
// more config info...
)
);
最後に、あなたのManagerAbstractクラスが注射を受けることができていることを確認します。
モジュール/マイ/ SRC /マイ/モデル/ ManagerAbstract.php:任意のサブクラスを使用するために、あなたはDIC経由で取得したり、サービスにマッパーを注入し、その後SERVICを注入する必要がある
<?php
namespace My\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Adapter\AdapterAwareInterface;
abstract class ManagerAbstract implements AdapterAwareInterface
{
/**
* @var Zend\Db\Adapter\Adapter
*/
protected $adapter;
// some code
public function setDbAdapter(Adapter $adapter)
{
$this->adapter = $adapter;
}
// some more code
}
注意eを使用したいコントローラ(または他のサービス)に入力します。
すごい、すばらしい答えをありがとう!しかし、私はまだ把握できなかった問題を抱えています。 'Zend \ Db \ Adapter \ Adapter :: __ construct'のパラメータドライバのインスタンス/オブジェクトがありません - 何が問題なのでしょうか? –
これは、DI構成がどこかで間違っていることを意味します。おそらくZend \ Db \ Adapter \ Adapterの定義の中にあります –