>백엔드 개발 >PHP 튜토리얼 >PHP 종속성 주입 요약 공유

PHP 종속성 주입 요약 공유

WBOY
WBOY앞으로
2022-04-13 13:01:596662검색

이 기사는 PHP에 대한 관련 지식을 제공하며, 종속성 주입이란 무엇인지, 종속성 주입의 이유, 종속성 주입 적용 등 종속성 주입과 관련된 문제를 주로 소개합니다. 모두에게 도움이 되기를 바랍니다. . 돕다.

PHP 종속성 주입 요약 공유

추천 학습: "PHP 비디오 튜토리얼"

이 글에서 PHP 종속성 주입을 이해하세요. 많은 사람들이 PHP를 배운 후 종속성 주입이라는 용어를 듣게 될 것입니다. 내 경우에는 의존성 주입이 실제로는 PHP 프로그래밍 디자인 패턴이라는 점을 이해한다. 비록 디자인 패턴으로 분류되지는 않았지만 디자인 패턴의 존재는 프로그래밍의 효율성을 위해 존재하는 것이고, 당연히 의존성 주입이다.

1. 종속성 주입(DI)이란

  • 종속성 주입(DI)은 실제로 생성자를 통해 클래스에 종속성을 자동으로 주입하는 것을 의미합니다.
  • 일반인 입장에서는 현재 클래스를 운영하고 있다는 뜻입니다. , 그러나 이 클래스의 일부 메서드나 함수는 이 클래스만으로는 완료할 수 없고 다른 클래스의 도움을 받아 완료해야 합니다. 가장 직접적인 징후는 매개변수 데이터가 객체로 전달될 때입니다. 엄밀히 말하면 다른 클래스에서 다른 클래스를 조작하려는 경우 두 클래스 사이에는 상호 의존성이 있습니다. 매개변수를 전달하는 방법을 주입이라고 합니다. 2. 처음에는 PHP에서 종속성 주입이 필요한 경우가 발생합니다. 한 클래스에 다른 클래스를 사용하면 다음과 같이 동작합니다
  • 예를 들어 컨테이너 클래스에서 어댑터 클래스를 사용해야 한다면 사용하기 전에 인스턴스화해야 합니다

    사용해야 하는 경우 외부에서 다수 클래스를 사용하면 결합도가 너무 높아져 나중에 유지 관리가 어려워질 수 있습니다. 일반인의 관점에서 보면 컨테이너는 외부 클래스 없이 작동할 수 없습니다. 이를 결합도가 너무 높다고 합니다. 단순 의존성 주입

위의 코드는 결합도가 너무 높아 의존성 주입의 출현으로 이어지며 주로 결합을 이해하기 위해

아래와 같이 작동해야 하는 클래스 객체만 전달하면 됩니다.
  • 종속성 주입 작업의 매개변수는 일반적인 매개변수가 아닌 객체입니다. 이해가 되셨나요?
  • 하지만 이렇게 간단한 종속성 주입으로 인해 많은 클래스에 의존하게 되면 통과하는 데 오랜 시간이 걸립니다. 매개변수 혼동되기 쉬움
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct()
        {
            $this->adapter = new adapter();
        }
    }
  • 4. 높은 수준의 종속성 주입

위의 매개변수 혼동 문제를 해결하기 위해 이번에는 종속성 주입이 진화했습니다.

매직 메소드를 통해 __get set 객체
  • 매직에 관심이 있다면 메소드에 대해 잘 모른다면 이전 기사인 php의 매직 메소드에 대한 자세한 설명을 참조하세요.
  • 이제 우리는 너무 많은 의존성과 혼란스러운 매개변수 문제를 해결할 수 있습니다.
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct(adapter $adapter)
        {
            $this->adapter = $adapter;
        }
    }
  • 5. 종속성 주입 적용

먼저 작업하려는 클래스를 컨테이너에 주입하는 데 주로 사용되는 컨테이너 클래스를 정의하겠습니다. 이를 사용할 때는 컨테이너 개체만 전달하면 됩니다. 6. 상위 수준 최적화

  • 위 애플리케이션에서는 인스턴스화된 객체를 컨테이너에 직접 주입합니다
  • 이렇게 하면 모든 객체가 사용되기 전에 다시 인스턴스화되어 리소스 손실이 발생합니다
  • 우리는 통과할 수 있습니다 객체가 인스턴스화에 의해 주입되지 않도록 클로저에 사용해야 할 때 다시 인스턴스화할 수 있습니다
  • 서버 리소스 손실을 줄입니다
<?php
class container
{
    public $instance = [];

    public function __set($name, $value)
    {
        $this->instance[$name] = $value;
    }
}

$container = new container();

$container->adapter = new adapter();

권장 학습: "PHP 비디오 튜토리얼 "

    위 내용은 PHP 종속성 주입 요약 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제