私はDependency Injection、Inversion of Control、IoCコンテナについて多くのことを読んできました。私はまた、主に動的言語(仕事ではPHP、自宅ではPython)でプログラムします。ここで私が見つけてる事がありますが、これは私が一緒にそれをすべてのピースとして埋めるために私のためのギャップの多くを残し:IOCコンテナと動的言語
- Why are IOC containers unnecessary with dynamic languages?
- Why do I need an IoC container as opposed to straightforward DI code?
- Advantages an IoC container provides beyond simple DI(ブログ記事)
私が読んでいるのは、動的言語でDIを実行するのがずっと簡単なので、IoCコンテナは静的言語ではるかに大きな処理です。しかし、DIをはるかに上回る利点を提供します。たとえば、依存関係を管理したり、手作業で十数個のオブジェクトを組み合わせる必要がなくなります。そして、ちなみに、それらは複雑なので、自分でやろうとしないでください(しかし、PHPには良いものはありません)。
私はこの情報が私に一種の葉を残しているように感じます。私はそれをどうしますか?私は、非常に複雑な依存関係を持つ非常に大きなコードベースで作業します(そしておそらくリファクタリングの必要性は高いですが、それは別の並列問題です)。私たちは今までDIを実装することに非常に苦労しました。私は本当に正しい方向に向けるよう努めています。動的言語とIoC(または少なくともIoCコンテナ)に関しては、そこには何もないようです。
私は、「ハンドストリング」の依存関係を当面は一緒にして、後でコンテナで自動化することを心配しています。私自身の単純なIoCコンテナを実装する価値はありますか?それとも、PHPのコストに最終的には恩恵をもたらすのではないでしょうか?
http://components.symfony-project.org/dependency-injection/ containerを試しましたか? – Mchl
@mchl:それは実際にはかなりよく見えます。ありがとう! (もちろん、ドキュメントはIoCコンテナのより良い説明の1つですが、これはすべて私がこのようなことを考え出していたときに役に立ちました) – keithjgrant
@mchl:あなたのリンクは私にとって最も役に立つものです。まだ見たことがない。それを答えに移してください。何も面白さがなければ、賞金はあなたのものです。 – keithjgrant