クイックスタートsymfonyはDI(依存性注入)のチュートリアル
何か依存性注入 (DI)は?
依存性の注入は、ソフトウェアアプリケーション内で疎結合されたオブジェクトを可能にする技術です。 オブジェクトが別の機能へのアクセスを必要とする場合、一般的に、それは内部的に密結合のシステムにつながってインスタンス化される。 依存性注入を実装することによって、我々は( - IOC時にはまた制御の反転と呼ばれる)使用する準備ができて、必要なオブジェクトを注入する。 次の例をご覧ください。
<?PHP クラスの意思決定{ パブリック関数のmakeDecision(配列$パラメータ){ / /データベースのアダプタが必要です $ DP =新しいDecisionParameters(); $がparameterScore = $ DP -> getScore($パラメータ); / * ... いくつかのより多くの意思決定ロジック... * / リターン($> 50をparameterScore); } }
コードのこの部分は、しっかりとDecisionParametersのオブジェクトに結合されるように言われています。 疎結合な方法で上記の書き換え我々は次のようなものがあるんだけど...。
<?PHP クラスの意思決定{ プライベート$ _dp。 パブリック関数__construct($ DP){ の$ this -> _dp = $ DP; } パブリック関数のmakeDecision(配列$パラメータ){ $がparameterScore =の$ this -> _dp -> getScore($パラメータ); / * ... いくつかのより多くの意思決定ロジック... * / リターン($> 50をparameterScore); } }
我々はたびに、オブジェクトが、我々はまたその依存関係をインスタンス化しすぎでこれらを渡す必要があるインスタンス化されているような複雑さを追加している疎結合コードの利点を得るおいた。 たとえば、この:
$選択=新しい意思決定者(); エコー$選択肢 - > makeDecision(配列('努力'=>'低'、'リターン'=>'高'));
次のようになります:
$ DP =新しいDecisionParameters(); 選択=新しい意思決定者($ DP)$; エコー$選択肢 - > makeDecision(配列('努力'=>'低'、'リターン'=>'高'));
クラスの依存関係の数が増加するにつれ、このような状況がより苦痛になる、との依存関係自体が依存関係を持っている場合はどうでしょうか。 これは非常に迅速に、オブジェクトの管理の悪夢になることができます! 依存性注入コンテナ(またはフレームワーク)を入力してください...
読書"クイックスタートsymfonyはDI(依存性注入)のチュートリアル"を続ける»
















































