phpにおける依存注入例の詳細な解説

2260 ワード

本論文の例は,phpにおける依存注入を述べた.皆さんに参考にしてあげます.具体的には以下の通りです.
依存注入は、ハードコードの依存からのデカップリングを可能にし、動作時やコンパイル時に修正できるソフトウェア設計モードです.
私は今でもよく分かりません.上の「依存注入」の定義は何ですか?
「PHPの道」の「依存注入」についての説明を参考にすることができます.http://laravel-china.github.io/php-the-right-way/#dependency_injection
簡単に言えば、私たちはクラスの方法でより便利に関連のクラスを呼び出すことができます.
このようなクラスがあるとします.

class Test
{
 public function index(Demo $demo,Apple $apple){
  $demo->show();
  $apple->fun();
 }
}

index方法を使いたいなら、私たちは普通こうする必要があります.

$demo = new Demo();
$apple = new Apple();
$obj = new Test();
$obj->index($demo,$apple);

indexメソッドを呼び出すのは面倒くさいですか?上記の方法はまだ二つのパラメータしかありません.もっと多くのパラメータがあれば、より多くのオブジェクトをパラメータとして実装します.私たちが導入した「依存注入」は、次のように呼び出されます.

$obj = new dependencyInjection();
$obj->fun("Test","index");

上記の例では、Testクラスのindex方法はDemoとAppleクラスに依存しています.
「依存注入」とは、すべての方法の「依存性」のクラスを識別し、パラメータ値としてこの方法に注入することである.
dependencyInjection類はこの依存注入任務を完成したのです.

getParameters();
  $params = array();
  foreach ($parammeters as $item) {
   preg_match('/> ([^ ]*)/',$item,$arr);
   $class = trim($arr[1]);
   $params[] = new $class();
  }
  $instance = new $className();
  $res = call_user_func_array([$instance,$action],$params);
  return $res;
 }
}

mvcフレームの中では、controlは複数のmodelを使用する場合があります.注入やクラスに依存した自動ローディングを使ったら、次のように使えます.

public function index(UserModel $userModel,MessageModel $messageModel){
 $userList = $userModel->getAllUser();
 $messageList = $messageModel->getAllMessage();
}

灰はよく便利です
PHP関連の内容について興味がある方は、本駅のテーマをご覧ください.「php対象プログラム設計入門教程」、「PHP配列(Aray)操作技巧大全」、「PHP基本文法入門教程」、「PHP演算と演算子用法まとめ」、「php文字列(string)用法まとめ」、「php+mysqlデータベース操作入門教程」及び「phpよくあるデータベース操作技術まとめ」
本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように.