찾다
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 OOP 부분 구성과 상속 및 종속성 주입 비교PHP OOP 부분 구성과 상속 및 종속성 주입 비교

05Jan2025

이번 시리즈에서는 PHP 객체지향 프로그래밍(OOP)의 기초를 다루겠습니다. 콘텐츠는 순차적인 부분으로 구성되며 각 부분은 특정 주제에 중점을 둡니다. OOP 개념이 처음이거나 익숙하지 않은 분을 위한 이 시리즈는

PHP 게으른 개체를 사용하여 PSR 호환 종속성 주입 컨테이너 구축PHP 게으른 개체를 사용하여 PSR 호환 종속성 주입 컨테이너 구축

04Jan2025

PHP 8.4에서 게으른 개체를 사용한 종속성 주입 탐색 최신 PHP 영역에서 버전 8.4 릴리스에는 Lazy Objects라는 획기적인 기능이 도입되었습니다. 이러한 객체를 사용하면 꼭 필요할 때까지 초기화를 연기하는 새로운 방법을 사용할 수 있습니다.

도서관 관리 시스템 활용 사례 다이어그램 도서관 관리 프로그램 (1)도서관 관리 시스템 활용 사례 다이어그램 도서관 관리 프로그램 (1)

29Jul2016

도서관 관리 시스템 활용 사례 다이어그램: 도서관 관리 시스템 활용 사례 다이어그램 도서관 관리 프로그램(1): 이 수준의 프로그램에서 사용하는 데이터 테이블 구조: # ------ --- --------------------- # # 데이터 테이블 구조 'author' # CREATE TABLE 작성자 ( author_id int (6) DEFAULT '0' NOT NULL auto_increment, first_name varchar(20)

도서관 관리 시스템 소스 코드 PHP는 무작위 확인 코드 이미지 코드를 생성합니다.도서관 관리 시스템 소스 코드 PHP는 무작위 확인 코드 이미지 코드를 생성합니다.

29Jul2016

도서관 관리 시스템 소스 코드: 도서관 관리 시스템 소스 코드 php 무작위 인증 코드 생성 이미지 코드: 다음과 같이 코드를 복사합니다:

도서관 관리 시스템 요구사항 분석 도서관 관리 프로그램(2)도서관 관리 시스템 요구사항 분석 도서관 관리 프로그램(2)

29Jul2016

도서관 관리 시스템 수요 분석 : 도서관 관리 시스템 수요 분석 도서 관리 프로그램 (2) : 도서 카탈로그 입력 부분 :

시스템 설계: 도서관 관리 시스템시스템 설계: 도서관 관리 시스템

01Nov2024

Go로 도서관 관리 시스템 구축하기 이 기사에서는 Go로 구현된 LMS(라이브러리 관리 시스템)를 살펴보고 핵심 기능, 디자인 결정 및 주요 코드 조각을 강조합니다. 라이브러리 관리의 핵심 기능

See all articles