依存性注入
機能の変更のクラスBは、カテゴリが従わなければならないクラスBの使用につながる場合は、クラスAの使用時間にオブジェクトクラスBをインスタンス化するために必要とされるクラスAクラスBに依存する場合には必要AとBの高い結合を入力する主要修正。この溶液をB、外部へのクラスの具体例である時間、タイプ依存インタフェースクラスです。
私たちのビジネスの通知モジュールは、一般的に使用されてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
上記のコードは、私たちの伝統的な文言です。クラスによって送信された最初のメッセージ。その後、我々は、メッセージを送信するメッセージ、コール・インタフェースを送信する必要がある場所。ある日、あなたは、さまざまなニーズを満たすためにテキストメッセージを送信するためのインタフェースを追加する必要があります。そして、あなたは再びMessageクラス内の変更を加えることがわかります。その後、変更を加える必要があります。またOrderクラス。これは非常に面倒です。この時間は、アイデアの依存性注入があります。調整を行うためのコードをここに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
だから我々は、依存性注入のアイデアを実現し、非常に便利に拡張されていません。
コンテナサービス
私は、サービスコンテナが自動的に生成されたクラスファクトリであることを理解します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
コンテナは、単純なサービスのバインドを持っているコンテナである、2つのメソッドを作ります
バインドバインディングサービスは、コンテナの対象です。オブジェクトがコンテナから削除されていることを確認。
練る
バインドを渡す必要の方法では、オブジェクトまたは閉鎖機能の具体的な例を渡すことができます。
実際に、あなたもこれを書くことができます私は、この全体の閉鎖機能が使用されて見ることができます
1 2 |
|
差の閉鎖と比べて後者の文言は、我々は簡単にサービスにバインドできるオブジェクトをインスタンス化する必要があるということです。クロージャは、オブジェクトをインスタンス化するときに、我々は、このサービスを使用することです。クロージャは多くの利点がある見ることができます。
メイク
この方法は、方法はコンテナから出ていきます。どちらが最初の直接的なリターンがある場合は、現在のクライアントだけでなく、既存のインスタンス変数があるか否かを判断します。その後、call_user_func_arrayによってオブジェクトを返しない場合。