ホームページ > バックエンド開発 > PHPチュートリアル > PHP でのいくつかの依存関係の注入

PHP でのいくつかの依存関係の注入

WBOY
リリース: 2016-06-23 13:24:57
オリジナル
848 人が閲覧しました

よく見るけどよく理解していない概念、依存性注入 (DI) とコントローラー反転 (Ioc) について、いくつか良い記事を見つけたので共有します。 私の理解では、依存関係の注入とは、コンポーネントがコンストラクター、メソッド、または属性フィールドを通じて対応する依存関係オブジェクトを取得することを意味します。

理解するために実際の例を見てみましょう。例えば、包丁が欲しいです。
1. 新しい包丁に対応して、自分で作ることができます。
2. ファクトリーモデルに対応する包丁を生産している工場から購入できます。
3. 店舗に電話して、商品を自宅まで配達してもらうことができます。これは依存性注入に相当します。

別の例として、私は俳優ですが、あるドラマの男性主人公を演じるよう、ある監督に頼むことはできません。逆に、誰を演じるかは監督が決めることができます。そして私たちの目的はこの俳優です。

インジェクションのいくつかの方法:

1.construct インジェクション

<?phpclass Book {   private $db_conn;    public function __construct($db_conn) {       $this->db_conn = $db_conn;   }}
ログイン後にコピー

ただし、依存関係が多すぎる場合は、コンストラクターで複数のパラメーターを渡す必要があり、3 つを超えるとコードが読みにくくなります。

2.set注入

<?php  $book = new Book();  $book->setdb($db);  $book->setprice($price);  $book->set_author($author);?>
ログイン後にコピー

コードは非常に明確ですが、4番目の依存関係を注入する必要がある場合、別の行を追加することになります。

より良い解決策は、すべての依存関係のコンテナとしてクラスを作成することです。このクラスでは、必要な依存関係を保存、作成、取得、検索できます

現時点では、ブック インスタンスを取得する場合のみです。 $ newone = Ioc::makebook();

を実行する必要があります。

上記はコンテナの具体的な例です。 レジストリの登録と取得を使用する方が良いです。次のメソッドを使用して依存関係を登録および注入できます

<?phpclass Ioc {   protected $db_conn;   public static function make_book() {       $new_book = new Book();       $new_book->set_db(self::$db_conn);       //...       //...       //其他的依赖注入       return $new_book;   }}
ログイン後にコピー

http://net.tutsplus.com/tutorials/php/dependency-injection-huh

http://scriptogr.am/mattsah/post/dependency -in-php

http://martinfowler.com/articles/injection.html

http://www.potstuck.com/2009/01/08/php-dependency-injection/

http://www .potstuck.com/ 2010/09/09/php-dependency-a-php-dependency-injection-framework/

http://www.cnblogs.com/Seekr/archive/2012/06/20/2556463.html


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート