SL は分離できるように設計されており、サービスベースおよびコンポーネントベースのアプリケーションに非常に適しています。
Service Locator は実行時リンカーとして機能し、クラスに変更を加えることなく、実行時にクラスによって選択されたサービスを動的に変更できます。
クラスは、実行時に必要なサービスを増加、減少、または置換することを目的としており、それによってある程度の最適化を達成できます。
サービスプロバイダーとサービスユーザーの完全な分離を実現し、フレームワーク全体での独立したテストとコードの再利用を促進します。 Yii の
基本機能
SL は、yiidiServiceLocator
<code>class ServiceLocator extends Component{ // 用于缓存服务、组件等的实例 private $_components = []; // 保存服务和组件的定义,通常为配置数组,可以用来创建具体的实例 private $_definitions = []; // 重载了getter, 使得访问服务和组件与访问类的属性一样。 // 保留了原来Component的getter所具有的功能 public function __get($name){} }</code>
データ構造によって実装されています
SL は、サービスとコンポーネントを登録するメソッドを提供します。
$_components は、SL 内のコンポーネントまたはサービスのインスタンスをキャッシュするために使用され、読み取りおよび書き込み可能な属性です。
参考
以上、Yii のソースコード - Service Locator (Service Locator) の解釈について、さまざまな側面を含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。