이 글에서는 PHP 관련 지식을 소개합니다. 종속성 주입 DI는 실제로 생성자를 통해 클래스에 대한 종속성을 자동으로 주입하는 것을 의미합니다. 함께 살펴보겠습니다. 모든 사람.
(권장 튜토리얼: PHP 비디오 튜토리얼)
DI/종속성 주입이란 무엇입니까
종속성 주입 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6
시각적 웹 개발 도구
