찾다
PHP 라이브러리기타 도서관종속성 주입 컨테이너용 PHP 라이브러리
종속성 주입 컨테이너용 PHP 라이브러리
<?php
namespace Auryn;
class CachingReflector implements Reflector
{
    const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
    const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
    const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
    const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
    const CACHE_KEY_METHODS = 'auryn.refls.methods.';
    private $reflector;
    private $cache;
    public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
    {
        $this->reflector = $reflector ?: new StandardReflector;
        $this->cache = $cache ?: new ReflectionCacheArray;
    }
    public function getClass($class)
    {
        $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
        if (!$reflectionClass = $this->cache->fetch($cacheKey)) {
            $reflectionClass = new \ReflectionClass($class);
            $this->cache->store($cacheKey, $reflectionClass);
        }
        return $reflectionClass;
    }

우리의 아이디어는 애플리케이션이 Foo 클래스를 사용할 때 Foo 클래스를 생성하고 Foo 클래스의 메서드를 호출한다는 것입니다. 이 메서드에 Bar 클래스가 필요한 경우 Bar 클래스를 생성하고 Bar 클래스 메서드를 호출합니다. Bim 클래스가 필요한 경우 Bim 클래스를 생성한 후 다른 작업을 수행합니다. 종속성 주입을 사용한다는 아이디어는 애플리케이션이 Foo 클래스를 사용하고 Foo 클래스에는 Bar 클래스가 필요하며 Bar 클래스에는 Bim 클래스가 필요하고 먼저 Bim 클래스를 만든 다음 Bar 클래스를 만들고 Bim을 주입하는 것입니다. 그런 다음 Foo 클래스를 만들고 Bar 클래스를 삽입한 다음 Foo 메서드를 호출하고 Foo는 Bar 메서드를 호출한 다음 다른 작업을 수행합니다. 이것이 제어 반전 패턴입니다. 종속성 제어는 호출 체인의 시작 부분으로 반전됩니다. 이렇게 하면 종속성을 완벽하게 제어할 수 있고 주입된 다양한 개체를 조정하여 프로그램의 동작을 제어할 수 있습니다. 예를 들어 Foo 클래스는 Memcache를 사용하므로 Foo 클래스 코드를 수정하지 않고도 대신 Redis를 사용할 수 있습니다.

종속성 주입 컨테이너를 사용한 후의 아이디어는 애플리케이션이 Foo 클래스에 액세스해야 하는 경우 컨테이너에서 Foo 클래스를 가져오고 컨테이너가 Bim 클래스를 만든 다음 Bar 클래스를 만들고 Bim을 주입한 다음 Foo 클래스에 Bar를 주입한 다음 적용합니다. 프로그램은 Foo 메서드를 호출하고 Foo는 Bar 메서드를 호출한 다음 다른 작업을 수행합니다. 즉, 컨테이너는 인스턴스화, 종속성 주입, 종속성 처리 등을 담당합니다.


부인 성명

이 사이트의 모든 리소스는 네티즌이 제공하거나 주요 다운로드 사이트에서 재인쇄되었습니다. 소프트웨어의 무결성을 직접 확인하십시오! 이 사이트의 모든 리소스는 학습 참고용으로만 사용됩니다. 상업적 목적으로 사용하지 마시기 바랍니다. 그렇지 않으면 모든 결과에 대한 책임은 귀하에게 있습니다! 침해가 있는 경우 당사에 연락하여 삭제하시기 바랍니다. 연락처: admin@php.cn

관련 기사

PHP 종속성 주입 이해 |PHP 종속성 주입 이해 |

16Dec2016

Aravel 프레임워크의 종속성 주입은 실제로 매우 강력하며, 컨테이너를 통해 구현된 종속성 주입을 통해 필요한 서비스를 선택적으로 로드하고 프레임워크 초기화에 따른 오버헤드를 줄일 수 있습니다. 다음은 제가 인터넷에서 본 게시물입니다. 모든 사람과 공유할 수 있습니다.

PHP 클래스 리플렉션 구현의 종속성 주입 프로세스에 대한 자세한 설명PHP 클래스 리플렉션 구현의 종속성 주입 프로세스에 대한 자세한 설명

06Feb2018

PHP에는 클래스, 인터페이스, 함수, 메소드 및 확장을 리버스 엔지니어링하는 기능을 제공하는 완전한 리플렉션 API가 있습니다. 클래스 리플렉션에서 제공하는 기능을 통해 클래스가 정의되는 방법, 클래스에 포함된 속성, 클래스에 포함된 메서드, 메서드에 포함된 매개변수, 클래스 파일에 대한 경로 및 기타 매우 중요한 정보를 알 수 있습니다. 많은 PHP 프레임워크가 종속성 주입을 구현하여 클래스 간의 종속성을 자동으로 해결할 수 있는 것도 클래스 반영 덕분에 일상적인 개발에 큰 편의를 제공합니다.

PHP 종속성 반전(종속성 주입) 코드 example_php 예제PHP 종속성 반전(종속성 주입) 코드 example_php 예제

16May2016

이 글은 주로 PHP 종속성 반전(Dependency Inversion) 코드 예제를 소개합니다. 이 글은 필요한 구현 코드만 제공합니다.

PHP: 종속성 주입, 제어 반전, 종속성 반전 원칙PHP: 종속성 주입, 제어 반전, 종속성 반전 원칙

20Apr2018

이 글은 PHP의 내용인 의존성 주입, 제어 반전, 의존성 반전 원리를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

PHP 종속성 주입 요약 공유PHP 종속성 주입 요약 공유

13Apr2022

이 글은 의존성 주입이 무엇인지, 의존성 주입의 이유, 의존성 주입의 적용 등을 포함하여 의존성 주입과 관련된 문제를 주로 소개하는 PHP 관련 지식을 제공합니다. 모든 사람에게 도움이 되기를 바랍니다.

PHP 제어 반전 및 종속성 주입PHP 제어 반전 및 종속성 주입

12Mar2017

PHP 제어 반전 및 종속성 주입

See all articles