2012-04-13 8 views
0

Symfony2のサービスを理解するのに苦労しています。私はどこにいてもたくさんのものを読んでいますが(SOを含めていくつかを含む)、誰もそれを完全に説明していないようです。Symfony2のサービス構造

バンドルAと別々のバンドルBがあるとします。AバンドルでB機能を使用できるようにします。私はサービスコンテナにBを注入してAがそれを使用できるようにします。

どのバンドルにServicesディレクトリが必要ですか?どちらがコンフィギュレーションファイルを持つべきですか?両方とも必要ならば?エクステンションはどこに行きますか?どうして?

答えて

1

最初のこれら二つの質問を読んで、それまでの私の答え:

をそれを維持してください。その後、あなたはいくつかの方法であなたのサービスを登録できます。config.ymlで直接

  • JMSDiExtraBundleからアノテーションによってあなたのAppBundle、または
  • extension classを作成する - これは私が個人的に好むものです。
+0

ありがとうございました。 – phasmatis

3

バンドルBは、services.xmlファイルをロードするためにエクステンションが必要です。

バンドルBは、それのエントリがサービスを定義するservices.xmlのファイルです必要になります。

バンドルBには、目的の機能を公開するサービスクラスを含むサービスディレクトリがあります。

バンドルAは特別なものを必要としません。コンテナを使用してバンドルBに公開されているサービスにアクセスすることができます。サービスIDを知るだけで済みます。

いくつかのサービスを行うまでは混乱します。

+0

ありがとう、それは今いくつかの意味があります。私はまだテストしていませんが、これははるかに効果的な説明です(正しい場合)。私は読んでいます。 – phasmatis