PHP에서 종속성 주입은 생성자를 통해 클래스 종속성을 자동으로 주입하는 것을 의미합니다. 컨트롤러 아키텍처 방식과 동작 방식에서 매개변수에 객체형 제약을 가하면 의존성 주입은 자동으로 제거된다. 컨트롤러에 접근하기 위한 매개변수는 URL 요청에서 오기 때문에 일반 변수는 매개변수 바인딩을 통해 자동으로 얻어지고, 객체 변수는 자동으로 획득된다. 종속성 생성을 통해.
이 문서의 운영 환경: Windows 10 시스템, PHP 버전 7.1, Dell G3 컴퓨터.
PHP 종속성 주입이란 무엇을 의미합니까?
종속성 주입은 본질적으로 생성자를 통해 클래스 종속성을 자동으로 주입하는 것을 의미합니다. 예를 들어 객체 유형 제약 조건이 컨트롤러 아키텍처 메서드 및 작업 메서드의 매개 변수에 배치되면 종속성이 자동으로 트리거됩니다. 주입, 액세스 컨트롤러의 매개변수는 모두 URL 요청에서 오기 때문에 매개변수 바인딩을 통해 일반 변수를 자동으로 얻고, 종속성 주입을 통해 객체 변수를 생성합니다.
소위 종속성, 예를 들어 한 클래스는 Person이고 다른 클래스는 Car입니다. Drive와 같은 Person의 메서드가 Car를 참조해야 하는 경우 Person 클래스는 Car 클래스에 종속된다고 합니다. 이 종속 관계는 여전히 유효합니다. 예를 들어 Person 클래스의 객체 소년은 Car 클래스의 객체 Toyota에 의존합니다. 드라이브 메소드의 구현에 대해 이야기해 봅시다. 코드가 다음과 같다고 가정합니다:
Public Person{ ... public void drive(){ Car toyota=new Car("TOYOTA"); toyota.挂档; toyota.踩油门; toyota.打方向; } }
이 종속성으로 인해 객체 소년은 객체 생성을 책임져야 하고 심지어 전체 수명의 관리까지 책임져야 합니다. 예를 들어, 이 소년이 Audi를 운전하게 하려면 Person과 유사한 코드를 수정해야 합니다.
그래서 자바의 디자인 이론에서 아주 유명한 원리가 제안되었는데, 바로 의존성 역전 원리(Dependence Inversion)입니다. 핵심 아이디어는 구체적인 클래스 간의 종속성을 최대한 추상적인 종속성으로 변환하는 것입니다. Person 클래스는 특정 클래스인 Car가 아닌 추상 클래스 ICar에 의존해야 합니다. 여기서 Java는 추상화와 인터페이스의 사용을 강력히 권장합니다. 여기로 들어가세요.
이러한 종속성 역전 원칙은 팩토리 패턴, 빌드 패턴 등 많은 디자인 패턴에도 반영됩니다. 개인적으로 제어 IoC의 역전은 실제로 이 원칙을 구현한 디자인 패턴이라고 볼 수 있다고 생각합니다. 제어 역전, 저는 제어라는 단어가 무엇을 의미하는지 잘 이해하지 못했습니다. 그러나 제어 역전을 말하는 또 다른 방법은 의존성 주입입니다. 개인적으로 이해하기 더 쉽습니다. 위의 소년과 도요타의 예를 들어보겠습니다. 핵심은 소년이 도요타를 직접 참조할 필요 없이 소년이 의존하는 객체인 도요타를 소년에게 주입하는 것입니다. 이 주입 과정은 일반적으로 소년이 필요하지 않고 제어 프로그램에 의해 완료됩니다. 예를 들어 toyota를 참조하세요.
Public Person{ private ICar car; public Person(ICar onecar){ car=onecar; } public void drive(){ car.挂档; car.踩油门; car.打方向; } }
이때 주입 및 호출 프로세스는 다음과 같이 매우 간단합니다.
Toyota toyota=new Toyota(); Person boy=new Person(toyota); boy.drive();
참고: 여기서는 Toyota 클래스가 해당 객체의 특정 구현이라고 가정합니다. ICar 인터페이스 클래스.
이 예제에서는 가장 간단한 주입 방법, 즉 종속 개체를 개체의 생성자에 주입하여 달성되는 생성자 메서드 주입의 예를 보여줍니다. 일반적으로 사용되는 주입 방법도 있는데, 속성 기반 주입인데, 이는 객체의 속성에 종속 객체를 주입하여 달성된다는 의미입니다. 다음과 같이 boy와 toyota의 예를 들어보겠습니다. time, inject 및 call 프로세스는 다음과 같습니다.
Public Person{ private ICar car; public Person(){ } public void drive(){ car.挂档; car.踩油门; car.打方向; } public ICar getCar(){ return this.car; } public void setCar(ICar onecar){ car=onecar; } }
이제 종속성 주입의 개념이 상대적으로 명확해졌습니다. Spring에서 IoC를 구현하는 방법을 살펴보고 Spring이 성숙한 IoC 컨테이너로 어떻게 작동하는지 살펴보겠습니다. Spring에서는 주로 두 가지 개념을 통해 IoC를 구현한다. 첫째, XML 구성 파일을 통해 객체와 종속 객체를 XML 파일로 구성한다. 물론 XML 파일은 Spring에서 지정한 사양을 준수해야 한다. 그런 다음 아키텍처의 BeanFactroy 클래스를 통해 위의 내용을 자동으로 구현합니다. 기사에 설명된 주입 프로세스는 다음과 같이 여전히 boy와 toyota를 예로 사용합니다.
먼저 Person 클래스는 여전히 동일합니다.
그런 다음 무언가를 추가합니다. xml 구성 파일에 - (bean.xml로 가정):
Toyota toyota=new Toyota(); Person boy=new Person(); boy.setCar(toyota); boy.drive();
마지막으로 호출합니다. 프로세스는 다음과 같습니다.
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="oneCar" class="Toyota"> <!-- Toyota类是ICar的一个实现--> </bean> <bean id="onePerson" class="Person"> <!--本例以属性方式注入为例 --> <property name="car"> <ref bean="oneCar"></ref> </property> </bean> </beans>
권장 학습: "
PHP Video Tutorial위 내용은 PHP 의존성 주입은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版
시각적 웹 개발 도구
