ホームページ > バックエンド開発 > PHPの問題 > PHPの依存性注入はどのような用途に使われるのでしょうか?

PHPの依存性注入はどのような用途に使われるのでしょうか?

(*-*)浩
リリース: 2023-02-24 06:48:02
オリジナル
3560 人が閲覧しました

制御の反転 (Inversion of Control、略して IoC) は、コンピューター コード間の結合を減らすために使用できるオブジェクト指向プログラミングの設計原則です。最も一般的な方法は、依存性注入 (DI) と呼ばれます。

PHPの依存性注入はどのような用途に使われるのでしょうか?

構成を通じて依存関係インターフェイスの実装を変更することは、依存関係注入の最も基本的かつ中心的な機能でもあります

依存関係実装のインスタンス スコープ、シングルトン、スレッドごとに 1 つ、リクエストごとに 1 つなどを柔軟に制御します。

#依存パラメーター、依存依存関係などの管理

#コードはより簡潔で、ロジックはより明確です

モックはテストに便利です

(推奨学習: PHP プログラミングの入門から熟練度まで) ) 一般に、アプリケーション内の関数ブロックとクラス間の依存関係を、統一されたフレームワークを通じて一元管理することです。

簡単な依存関係注入の例については、

次のコードを見てください:

<?php
class Container {
 private $s=array();
 function __set($k, $c) { $this->s[$k]=$c; }
 function __get($k) { return $this->s[$k]($this); }
}
ログイン後にコピー

コンテナ クラスでは、A と B の間の関係をどのように管理できますか? 依存関係については、コードで話しましょう:

<?php
class A
{
  private $container;
  public function __construct(Container $container)
  {
    $this->container = $container;
  }
  public function doSomeThing()
  {
    //do something which needs class B
    $b = $this->container->getB();
    //to do
  }
}
ログイン後にコピー

次に、クラス B をコンテナ クラスに注入します:

$c = new Container();
$c->setB(new B());
ログイン後にコピー

クラス B が渡されないように、匿名関数を渡すこともできます。クラス B はすぐにインスタンス化されます。ただし、インスタンス化作業は実際に呼び出された場合にのみ完了します:

$c = new Container();
$c->setB(function (){
  return new B();
});
ログイン後にコピー

以上がPHPの依存性注入はどのような用途に使われるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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