종속성 주입과 제어 반전의 이름이 헷갈리게 들립니다. 이 글을 읽고 나면 그것이 무엇인지 알게 될 것입니다.
사실 이 둘은 같은 것을 지칭하며, 일종의 프로그래밍 아이디어일 뿐이라고 생각하지 마세요. 그리고 고상한.
그렇다면 용기란 무엇일까요? 직접적으로 이해하자면, 용기는 물건을 담는 물건입니다. 프로그래밍에서 공통 변수와 객체 속성은 모두 컨테이너입니다. 컨테이너에 무엇을 담을 수 있는지는 전적으로 컨테이너 정의에 따라 다릅니다.
하지만 지금 이야기하고 있는 것은 또 다른 종류의 컨테이너입니다. 텍스트나 값이 아닌 객체, 클래스, 인터페이스를 저장하는 컨테이너입니다. 이러한 컨테이너를 통해 가장 일반적으로 사용되는 기능이 구현됩니다. 코드 간의 분리, 종속성 주입.
그렇다면 왜 두 가지 개념이 있는 걸까요, 제어 역전과 의존성 주입에 대해 이야기하는 이유는 무엇일까요! 위에서 언급했듯이 실제로는 동일한 것을 지칭하지만 다른 각도에서 설명됩니다.
당신이 아버지의 아들이듯이, 당신은 여전히 할아버지의 손자입니다. 단지 다른 관점에서 문제를 바라보는 문제일 뿐입니다.
제어 반전
컨테이너의 관점에서 문제를 살펴보고, 컨테이너는 애플리케이션에 필요한 외부 리소스를 역으로 애플리케이션에 주입합니다.
종속성 주입
애플리케이션의 관점에서 문제를 살펴보세요. 애플리케이션은 컨테이너에 의존하여 필요한 외부 리소스를 생성하고 주입합니다.
Function
은 주로 코드 간의 결합 정도를 줄이는 데 사용됩니다.
애플리케이션에 필요한 개체와 외부 리소스를 효과적으로 분리합니다.
다음 두 그림은 문제를 명확하게 설명할 수 있습니다
간단한 사례를 들어보겠습니다
Person과 Car로 각각 두 클래스를 정의하고, Person in Person을 정의하고 pay in Car 방식을 호출합니다.
그런 다음 컨트롤러에서 호출하면 인쇄된 결과는 Car가 반환한 123이어야 하므로 인쇄되지 않습니다.
이때 코드를 수정하여 Car 클래스를 Person 클래스에 직접 전달하고 전달된 객체를 직접 사용하여 Person 클래스에서 해당 메서드를 호출하도록 하겠습니다.
이것은 단순한 구현 과정일 뿐입니다. 프레임워크 컨테이너 코드를 읽기 위한 길을 닦기 위해 프레임워크에 컨테이너를 삽입하는 방법은 나중에 자세히 설명하겠습니다.
배움의 끈기, 블로그의 끈기, 공유의 끈기는 카카가 창립 이래 늘 지켜온 신념입니다. 거대 인터넷에 올라온 카카의 글이 조금이나마 도움이 되었으면 좋겠습니다. 저는 카카입니다. 다음에 만나요.
위 내용은 ThinkPHP 컨테이너 제어 반전 및 종속성 주입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!