社内で MVC PHP フレームワークを構築しましたが、現在は DI コンテナーの実装に苦労しています。私は Pimple を DiC として採用し、Chris Hartjes の本「The Grumpy Programmer's Guide To Building Testable PHP Applications」を読みました (これは非常に優れた刺激的な読み物であり、強くお勧めします!)。 TDDについてもっと理解するために。とにかく、フレームワークのコアで DI を取得した場合、どのように定義を設定し、それを渡す必要がありますか。
- コンテナーを注入します (ユーザーが作成したコントローラーまでアプリケーション オブジェクトを注入します)。-間違っている
- dev-user に Bootstrap への「入力」を強制する -間違っている
- シングルトン -非常に間違っている
- オブザーバー パターン (オブザーバーに取り付けられた DiC。DiC のフロント エンドとしてのオブザーバー) - ?(おそらく最悪のアイデア :D )
次に、依存関係を作成せずに、フレームワーク全体でコア DiC を使用できるようにする方法 (たとえば、構成オブジェクトを挿入するため)、ユーザーにコーディングを強制したり、XML/JSON などを作成するオーバーヘッドを追加したりする必要はありません。
PS: ** Inversion-of-Control (IoC) と Service Locator については、多くの回答が得られると思います。それらを実装する方法を正確に理解できないようです..簡単な/基本的なガイドを参照してください。