2012-03-19 9 views
1

これは、Zendフレームワークに関する限り、DIに関連しています。私の質問は、DI容器をどこで使用するかということです。初期化のためにすべてのブートストラップを使用する必要がありますか?残りのアプリケーションは存在を知らないままにしておきますか?それともコントローラ、モデル、ヘルパーなどに渡して、必要に応じて使用するのがよいのでしょうか? Zend 2はどうですか?Zend/Zend 2の依存性注入コンテナを使用する場所

+1

DIコンテナはコンポジションルートにカプセル化する必要があります。http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx –

+0

ありがとう@MarkSeemann!素晴らしいコメント。 – orourkedd

答えて

5

一般的に依存性注入に関連しているので、SOLIDコードを記述しようとしている場合は、練習する必要があります。私がしました

http://ralphschindler.com/2011/05/18/learning-about-dependency-injection-and-php

:それはDICを使用する開発者はコードに直接ジャンプする前に持っていなければならない背景知識(と思う)に関連し、私は依存性の注入をテーマに書いた2件の記事を持っていますまた、ZF2のコードベースでのDICコンポーネントであるZendの\ディを使用する方法のいくつかの例をコンパイル:

https://github.com/ralphschindler/Zend_DI-Examples/

もう一点、私が作るために...あなたのようにDICを渡して起動したらたいと思いますコントローラ、モデルなどへの依存性...あなたのDiCは実際にサービス・ロカになりますその時点でこれは完全に受け入れられますが、サービスロケータを使用することは設計目標の一部であったはずです。

ZF2の次のベータサイクルでは、DiとService Locatorがモジュール、コントローラを通じてどのように使用され、どのように依存関係がヘルパーやモデルのようなものにプッシュされるのかがよく分かります。だからそれに気をつけてください。

あなたが始めることを望みます。

0

私はいくつかの答えを読んでいます。まず、私が知っている限り、Zendフレームワーク< ver 2でDependency Injection Containerに "composition root"での作業を依頼するのは現在のところ組み込まれていません。

したがって、ここで既に述べたように、最善の策はサービスロケータです。私はそれを行うためにZendフレームワークアプリケーションのセットアップを考え出しました。 hereをチェックしてください。一言で言えば

what it doesは、Zendアプリケーション・ブートストラップクラスの

  1. ブートストラップsymfonyの依存性注入
  2. があなたのサービス
を取得するためにそれを使用することができますZendのコントローラに1からコンテナを取得で
関連する問題