이 기사에서는 주로 프레임워크의 내부 컨테이너와 외관을 벤치마크로 구현하는 데 중점을 둡니다.
이전에 클래스 자동 로딩에 대한 소스 코드 분석을 분석했습니다. 및 구성 파일 로딩. 이 기사는 주로 컨테이너 및 Facade 클래스 구현과 소스 코드 구문 분석에 초점을 맞춘 세 번째 문제입니다. 그리고 이 기능을 구현하기 위한 몇 가지 지식 포인트를 배우십시오.
거기 컨테이너와 파사드를 배우기 전에 먼저 이해해야 할 두 가지 디자인 패턴, 싱글턴 패턴과 등록 트리 패턴입니다.
먼저 싱글톤 패턴에 대해 간략하게 설명해주세요.
이것이 구현된 것입니다. by Kaka Simple 싱글톤 모드에서 위의 세 가지 기능을 비교하여 일관성이 있는지 확인하세요.
정적 변수는 인스턴스
구조가 있고 비공개입니다
마지막은 정적 메소드인 getInstance
그럼 간단한 테스트를 해보겠습니다
이를 확인하기 위해 인덱스 컨트롤러에서 테스트해 보겠습니다. 해당 클래스만 한 번 인스턴스화되고 네 번 호출되었습니다
이 메서드를 확인하세요
new-class는 한 번만 실행됩니다. 이는 생성된 클래스가 한 번만 인스턴스화된다는 것을 직접적으로 증명합니다. Kaka 이전에 내가 가졌던 질문은 여기 생성자가 왜 개인 속성을 사용하는지에 대한 것입니다.
이런 질문을 받은 적이 있나요? Kaka가 함께 답변해 드리겠습니다
개인 속성의 생성자 메서드는 해당 클래스가 외부에서 인스턴스화되는 것을 방지하기 위해 이 클래스에 정의되어 있습니다.
이 클래스가 외부에서 인스턴스화되면 아래와 같은 오류가 보고됩니다.
그렇다면 여기서 싱글턴 패턴을 언급하는 이유는 무엇입니까! 이는 다음 학습 컨테이너의 소스 코드에서
가 사용될 것이기 때문입니다. 예를 들어 아래 그림의 thinkphp/library/think/Container.php
클래스에는 현재 컨테이너를 가져오는 인스턴스가 있습니다.
지금까지 싱글턴 패턴을 간략하게 이해했습니다. 싱글턴 패턴을 이해하는 것은 컨테이너를 더 잘 이해하기 위한 것이기도 합니다.
배움에 대한 끈기, 블로그에 대한 끈기, 공유에 대한 끈기 등은 카카가 처음부터 늘 지켜온 신념입니다. 거대 인터넷에 올라온 카카의 글이 조금이나마 도움이 되었으면 좋겠습니다. 저는 카카입니다. 다음에 만나요.
위 내용은 ThinkPHP 컨테이너의 싱글톤 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!