프레임워크 개발에서 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(2부).
이 글에서는 주로 채팅 프레임워크 개발에 관한 의존성 주입, 컨테이너 및 모양 모드(하단)를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
모양 모드: Facade, 또한 이를 파사드 패턴이라고 합니다
1. 한 문장으로 말하면 연산을 캡슐화하고 외부 세계에 대한 통합 인터페이스를 제공합니다
2 연산은 여러 클래스에 분산될 수 있고 방금 배운 컨테이너는 다음과 같이 캡슐화할 수 있습니다. 구현
3 따라서 모양 패턴과 종속성 컨테이너는 골든 파트너이며 함께 사용되는 경우가 많습니다
<?php /** * 用户登录的操作涉及三个操作 * 1.连接数据库 * 2.用户数据验证 * 3.输出提示信息 */ require 'container.php'; //创建Facade类,实现以上三个功能 class Facade { //连接数据库 public static function connect(Container $container) { return $container->make('db')->connect(); } //用户数据验证 public static function check(Container $container) { return $container->make('validate')->check(); } //输出提示信息 public static function display(Container $container) { return $container->make('view')->display(); } } //客户端调用 echo Facade::connect($container); echo Facade::check($container); echo Facade::display($container); //可以在外观模型中使用初始化方法事先注入容器对象,来简化客户端调用 require 'container.php'; class Facade { //创建成员属性保存容器对象 protected static $container = null; //创建初始化方法为容器对象赋值 public static function initialize(Container $container) { static::$container = $container; } /** * 因为已经在初始化方法中将容器对象导入到了当前类中, * 并且保存到了类的静态属性中,为所有类成员所共享, * 所以以下方法可直接调用不用再容器注入 * 注意:这里全部采用后期静态延迟绑定方法来访问当前容器对象 * 这主要是为了方便用户在静态继承的上下文环境中进行调用 */ //连接数据库 public static function connect() { return static::$container->make('db')->connect(); } //用户数据验证 public static function check() { return static::$container->make('validate')->check(); } //输出提示信息 public static function display() { return static::$container->make('view')->display(); } } //客户端调用 //初始化类门面类中的容器对象 Facade::initialize($container); //静态统一调用内部的方法(无须重复注入依赖容器对象啦,实现了细节隐藏,通用性更强) echo Facade::connect(); echo Facade::check(); echo Facade::display();
코드는 아래에 통합되어 있습니다.
<?php //数据库操作类 class Db { //数据库连接 public function connect() { return '数据库连接成功<br>'; } } //数据验证类 class Validate { //数据验证 public function check() { return '数据验证成功<br>'; } } //视图图 class View { //内容输出 public function display() { return '用户登录成功'; } } /******************************************************************************/ //一.创建容器类 class Container { //创建属性,用空数组初始化,该属性用来保存类与类的实例化方法 public $instance = []; //初始化实例数组,将需要实例化的类,与实例化的方法进行绑定 public function bind($abstract, Closure $process) { //键名为类名,值为实例化的方法 $this->instance[$abstract] = $process; } //创建类实例 public function make($abstract, $params=[]) { return call_user_func_array($this->instance[$abstract],[]); } } /******************************************************************************/ //二、服务绑定: 将类实例注册到容器中 $container = new Container(); //将Db类绑定到容器中 $container->bind('db', function(){ return new Db(); }); //将Validate类实例绑定到容器中 $container->bind('validate', function(){ return new Validate(); }); //将View类实例绑定到容器中 $container->bind('view', function(){ return new View(); });
php는 php5.3에서 시작하여 수많은 다른 프로그래밍 언어를 흡수합니다. 이점에는 점점 더 많은 새로운 기능, 특히 PHP를 새로운 차원으로 끌어올린 획기적인 버전인 php7.0의 출시가 포함됩니다. 더 훌륭한 PHP 개발 튜토리얼을 보려면 PHP 중국어 웹사이트(www.php.cn)에 계속 관심을 가져주세요.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
프레임워크 개발의 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(상단)
프레임워크 개발의 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(중간)
위 내용은 프레임워크 개발에서 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(2부).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











컨테이너 기술을 기반으로 한 경량 가상화 플랫폼인 Docker는 다양한 시나리오에서 널리 사용되었습니다. 프로덕션 환경에서는 컨테이너의 고가용성과 자동 장애 복구가 중요합니다. 이 문서에서는 특정 코드 예제를 포함하여 컨테이너 오류 복구 및 자동 다시 시작을 위해 Docker를 사용하는 방법을 소개합니다. 1. 컨테이너 자동 재시작 구성 Docker에서는 컨테이너 실행 시 --restart 옵션을 사용하여 컨테이너 자동 재시작 기능을 활성화할 수 있습니다. 일반적인 옵션은 다음과 같습니다. no: 자동으로 다시 시작하지 않습니다. 조용한

화웨이 공식 소식에 따르면, '개발자를 위한 모든 것'이라는 주제로 Open Atomic 개발자 컨퍼런스가 12월 16일부터 17일까지 이틀 동안 우시에서 열렸습니다. 이번 컨퍼런스는 Open Atomic Open Source Foundation인 화웨이가 주도했습니다. Inspur., DaoCloud, Xieyun, Qingyun, Hurricane Engine은 물론 OpenSDV Open Source Alliance, openEuler 커뮤니티, OpenCloudOS 커뮤니티 및 기타 회원 단위가 공동으로 AtomHub Trusted Mirror Center 구축을 시작했습니다. 이는 공식 테스트를 위해 공개되었습니다. AtomHub는 공동 구축, 공동 거버넌스, 공유의 개념을 고수하며 오픈 소스 조직과 개발자에게 중립적이고 개방적이며 공동 구축된 신뢰할 수 있는 오픈 소스 컨테이너 미러 센터를 제공하는 것을 목표로 합니다. DockerHub와 같은 이미지 웨어하우스의 불안정성과 통제불가능성을 고려하여

Windows 11 또는 10에 RedHatPodman 설치 명령 프롬프트 또는 Powershell을 사용하여 Windows 시스템에 RedHatPodman을 설치하려면 아래 단계를 따르십시오. 1단계: 시스템 요구 사항 확인 먼저 Windows 시스템이 최신 업데이트로 실행되고 있는지 확인해야 합니다. Podman 요구 사항을 실행하기 위한 요구 사항을 충족할 수 있습니다. Windows 11 또는 Windows 10 버전 1709(빌드 16299) 이상을 사용해야 하며 WSL2(Linux 2용 Windows 하위 시스템) 및 VM 기능을 활성화해야 합니다. 아직 활성화되지 않은 경우 2단계 명령을 사용할 수 있습니다. 이것을 실행합니다

이 글은 여러분에게 의존성 주입을 소개하고, 의존성 주입이 해결하는 문제와 그 기본 작성 방법을 소개하고, Angular의 의존성 주입 프레임워크에 대해 이야기할 것입니다. 여러분에게 도움이 되기를 바랍니다.

Phalcon 프레임워크에서 종속성 주입(DependencyInjection)을 사용하는 방법 소개: 현대 소프트웨어 개발에서 종속성 주입(DependencyInjection)은 코드의 유지 관리성과 테스트 가능성을 향상시키는 것을 목표로 하는 일반적인 디자인 패턴입니다. 빠르고 저렴한 PHP 프레임워크인 Phalcon 프레임워크는 종속성 주입을 사용하여 애플리케이션 종속성을 관리하고 구성하는 기능도 지원합니다. 이 글에서는 Phalcon 프레임워크를 사용하는 방법을 소개합니다.

C++에서 STL 컨테이너를 정렬하는 방법: sort() 함수를 사용하여 std::Vector와 같은 컨테이너를 제자리에 정렬합니다. 순서가 지정된 컨테이너 std::set 및 std::map을 사용하면 삽입 시 요소가 자동으로 정렬됩니다. 사용자 정의 정렬 순서의 경우 문자열 벡터를 알파벳순으로 정렬하는 것과 같은 사용자 정의 비교기 클래스를 사용할 수 있습니다.

Go에서 DI(종속성 주입) 모드는 값 전달 및 포인터 전달을 포함한 함수 매개변수 전달을 통해 구현됩니다. DI 패턴에서 종속성은 일반적으로 디커플링을 개선하고 잠금 경합을 줄이며 테스트 가능성을 지원하기 위해 포인터로 전달됩니다. 포인터를 사용하면 함수는 인터페이스 유형에만 의존하기 때문에 구체적인 구현에서 분리됩니다. 또한 포인터 전달은 큰 개체 전달에 따른 오버헤드를 줄여 잠금 경합을 줄입니다. 또한 DI 패턴을 사용하면 종속성을 쉽게 모의할 수 있으므로 DI 패턴을 사용하는 함수에 대한 단위 테스트를 쉽게 작성할 수 있습니다.

C++STL에서 가장 일반적인 컨테이너 유형은 Vector, List, Deque, Set, Map, Stack 및 Queue입니다. 이러한 컨테이너는 동적 배열, 이중 연결 목록, 키 및 값 기반 연관 컨테이너와 같은 다양한 데이터 스토리지 요구 사항에 대한 솔루션을 제공합니다. 실제로 STL 컨테이너를 사용하여 학생 성적을 저장하는 등 데이터를 효율적으로 구성하고 액세스할 수 있습니다.
