9

Rob Allen の akrabat ZF2 チュートリアル ( http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework-2.pdf ) を読み、依存関係を自分のものに注入する方法について説明しました。テーブル アダプタをテーブル クラスに追加します。

これは私がそれを行うことになっている方法のようです:

        array(
            'Application\Model\DbTable\UserTable',
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

        array(
            'Application\Model\DbTable\UserProfileTable',
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

それはかなりクールですが、私は約 84 個のテーブルを持っているので、これらのそれぞれを追加して、それらすべてに PdoMySQL を注入したいと言う必要があります。DbTable フォルダー全体を指定するなど、これを行う適切な方法はありますか? これでもうまくいきません:

        array(
            'Application\Model\DbTable\UserTable',
            'Application\Model\DbTable\UserProfileTable'
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

他の誰かがこれを行っていて、より良い解決策を見つけましたか?

ありがとう、ドム

4

2 に答える 2

1

あなたの質問は良い質問です、そして私は同意します、これは依存性注入が意味をなさないシナリオです。私はまだZF2APIを閲覧していませんが、テーブルレベルではなく、接続レベルでアダプターをバインドする機能を完全に放棄しましたか?

私のデータベースクラスでは、yamlファイルを使用して接続設定を保存しています。ユーザー名、パスワード、アダプターなど。Zend_Configに直接渡すことができる形式で実行し、Zend_Dbクラスに渡すことができます。

// Entry in connection.yml
database:
  adapter: Pdo_Mysql
  params:
    host:     myhost
    dbname:   mydatabase
    username: myusername
    password: mypassword

// Parse yaml file to get above snippet in an array ($dbConnectionparams)

$config = new Zend_Config($dbConnectionParams);

$dbo = Zend_Db::factory($config->database);

これで、データベース接続用のアダプターを変更する必要がある場合は、connection.ymlファイルという1つの場所でのみ変更する必要があります。

また、このタイプの接続データは他のさまざまな形式(xmlなど)で保存できると思います。

于 2011-11-30T06:28:02.147 に答える
0

モデル クラスに Zend\Db\Adapter\AdapterAwareInterface を実装し、コントローラーのサービス マネージャー経由で要求する必要があります。詳細については、私のブログ投稿をご覧ください: http://cmyker.blogspot.com/2012/11/zend-framework-2-model-database-adapter.html

于 2012-11-24T16:17:30.430 に答える