この問題は以前からわかっていましたが、PHP はこの問題をどのように解決するのでしょうか? yii2 なので、yii2 を使って簡単に紹介します。PHP での依存関係注入のプロセスを説明するために、yii2 のコア コードを統合しました。
yii2 開発を使用したことのある学生は Yii::createObject に精通しています。これは依存関係注入の「エントリ」です。
//$p 可以想象的yii2的配置文件,如$p = ['class'=>'sdk/Test', 'file'=>'xxxx']; // 'class' 是将要实现的类,‘file’是将要实现的对象的属性 function createObject($p){ $class = $p['class']; unset($p['class']); $obj = new $class;//require 使用的是 autoload 实现的 foreach($p as $f => $v){ $class->$f = $v; } return $obj;
もちろん、yii2 の createObject はそれをはるかに超えています。これは、PHP が「依存性注入」を実装する方法を説明するために非常に簡単に書かれています。 もちろん、これは非常に大雑把です (最も基本的なフォールト トレランス機能がなく、依存性注入のすべての機能を備えているわけではありません)。パラメータ管理、互換性のあるクロージャなど、これらはすべて、実際に yii2 DI 実装を確認すると明らかになります)。
上記は yii2 Essay (7) 依存性注入 - (2) PHP 依存性注入の簡単な実装の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。