SL의 목적도 분리이며 서비스 및 구성 요소 기반 애플리케이션에 매우 적합합니다.
서비스 로케이터는 런타임 링커 역할을 하며 클래스를 수정하지 않고도 런타임 시 클래스에서 선택한 서비스를 동적으로 수정할 수 있습니다.
클래스는 사용해야 하는 서비스를 추가, 빼기, 교체하여 런타임에 타겟팅할 수 있으며 이를 통해 어느 정도 최적화를 달성할 수 있습니다.
서비스 제공자와 서비스 사용자를 완전히 분리하여 프레임워크 전체에서 독립적인 테스트와 코드 재사용을 촉진합니다.
기본 기능
Yii의 SL은 yiidiServiceLocator
<code>class ServiceLocator extends Component{ // 用于缓存服务、组件等的实例 private $_components = []; // 保存服务和组件的定义,通常为配置数组,可以用来创建具体的实例 private $_definitions = []; // 重载了getter, 使得访问服务和组件与访问类的属性一样。 // 保留了原来Component的getter所具有的功能 public function __get($name){} }</code>
데이터 구조
로 구현됩니다. SL은 서비스 및 구성 요소를 등록하는 방법을 제공합니다.
$_comComponents는 SL의 구성 요소 또는 서비스 인스턴스를 캐시하는 데 사용되며 읽기 및 쓰기가 가능한 속성입니다.
참고
이상은 Yii 소스코드 - Service Locator(Service Locator)의 해석을 다양한 측면을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.