이 글에서는 PHP 관련 지식을 소개합니다. 종속성 주입 DI는 실제로 생성자를 통해 클래스에 대한 종속성을 자동으로 주입하는 것을 의미합니다. 함께 살펴보겠습니다. 모든 사람.
(권장 튜토리얼: PHP 비디오 튜토리얼)
종속성 주입 DI는 실제로 클래스의 종속성이 생성자를 통해 자동으로 주입된다는 것을 의미합니다
일반인의 용어로 말하면, 현재 클래스를 운영하고 있지만 이 클래스의 일부 메소드나 기능은 이 클래스만으로는 완료할 수 없고 다른 클래스의 도움을 받아 완료해야 합니다. 가장 직접적인 징후는 매개변수 데이터가 객체로 전달된다는 것입니다. 언제. 엄밀히 말하면 두 클래스 사이에 상호의존성이 존재하는데, 이를 인젝션(injection)이라고 하는데, 의존성 주입이 나타나는 이유는 PHP를 사용하지 않을 때입니다. 한 클래스의 다른 클래스에서는 다음 작업을 수행하는 경우가 많습니다
예를 들어 컨테이너 클래스에서 어댑터 클래스를 사용해야 하는 경우 사용하기 전에 인스턴스화해야 합니다
간단히 말하면 외부 클래스 없이는 컨테이너가 작동할 수 없다는 뜻인데, 이를 결합도가 너무 높다고 합니다
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
단순 종속성 주입
위 코드의 결합 정도가 너무 높아서 주로 결합을 이해하기 위한 종속성 주입이 등장합니다.
다음의 경우 필요한 클래스 객체만 전달하면 됩니다. 조작됨
그런데 이렇게 간단한 의존성 주입은 클래스에 많이 의존하면 시간이 매우 길어질 수 있습니다. 매개변수를 전달하면 혼동되기 쉽습니다
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
고수준 종속성 주입
위의 혼동되는 매개변수 문제를 해결하기 위해 이번에는 종속성 주입이 최적화되었습니다
매직 메서드를 통해 __get to set the object
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } $container = new container(); $container->adapter = new adapter(); $container->autofelix = new autofelix();
종속성 주입 애플리케이션
먼저 작업하려는 클래스를 객체에 주입하는 데 주로 사용되는 컨테이너 클래스를 정의합니다. 컨테이너
사용 시에는 컨테이너 개체만 전달하면 됩니다
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } class adapter { public $name = '我是调度器'; } $container = new container(); $container->adapter = new adapter(); class autofelix { private $container; public function __construct(container $container) { $this->container = $container; } public function who($class) { return $this->container->instance[$class]->name; } } $autofelix = new autofelix($container); $who = $autofelix->who('adapter'); var_dump($who); //我是调度器
위 애플리케이션에서는 인스턴스화된 개체를 컨테이너에 직접 주입합니다.
이렇게 하면 모든 개체가 인스턴스화됩니다. 사용되기 전에 리소스 손실이 발생합니다
<?php $container = new container(); $container->adapter = new adapter(); //高阶优化 $container = new container(); $container->adapter = function () { return new adapter(); };
(추천 튜토리얼:
PHP 비디오 튜토리얼)
위 내용은 PHP에서 DI 종속성 주입을 간단히 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!