백엔드 개발 PHP 튜토리얼 프레임워크 개발 시 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(중간).

프레임워크 개발 시 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(중간).

Jul 14, 2018 am 11:59 AM
프레임워크 개발

이 글은 주로 채팅 프레임워크 개발에 관한 의존성 주입, 컨테이너 및 모양 모드(중간 부분)를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유합니다. # 🎜🎜#객체간 결합 문제는 의존성 주입을 통해 해결했지만 근본적으로 해결하지는 못했습니다.

이제 이를 컨테이너 기술을 통해 설명하겠습니다.

컨테이너는 실제로 클래스, 클래스 인스턴스, 클로저, 함수 등 모든 서비스 리소스를 포함할 수 있는 상자입니다. 호출 수신자를 내부에 배치할 수 있을 뿐만 아니라

#🎜🎜 # 주요 호출 개체도 내부에 배치할 수 있습니다. 그러므로 용기는 우리가 매일 보는 물건을 담는 데 사용되는 용기와 동일한 기능을 가지고 있습니다.

현재 컨테이너 기술이 널리 사용되고 있으며, 서비스 자동 로딩을 구현하는 컨테이너 기술을 기반으로 한 우수한 PHP 개발이 많이 이루어지고 있습니다.

예: Laravel, ThinkPHP5.1 등

컨테이너(IOC)라고도 하는 서비스 컨테이너

기본 아이디어: 이를 사용하고 다음과 유사하게 외부 개체 호출을 최대한 단순화합니다. [즉, 플러그 앤 플레이 아이디어]

기본 구현은 세 단계로 구분됩니다.

1. 컨테이너를 만들고 클래스를 바인딩합니다. 컨테이너에 대한 클래스 프로세스(클래스, 인터페이스 또는 기타에 국한되지 않음)

2. 서비스 등록, 사용할 수 있는 모든 도구 클래스를 컨테이너에 바인딩

3 . 컨테이너 종속성: 또는 종속성 컨테이너, 작업 클래스를 호출할 때 컨테이너 개체를 직접 전달할 수 있습니다.

다음은 구현의 소스 코드입니다. :

<?php 
//数据库操作类
class Db
{
//数据库连接
public function connect()
{
return &#39;数据库连接成功<br>&#39;;
}
}
//数据验证类
class Validate
{
//数据验证
public function check()
{
return &#39;数据验证成功<br>&#39;;
}
}
//视图图
class View
{
//内容输出
public function display()
{
return &#39;用户登录成功&#39;;
}
}
/******************************************************************************/
//一.创建容器类
class Container
{
//创建属性,用空数组初始化,该属性用来保存类与类的实例化方法
protected $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(&#39;db&#39;, function(){
return new Db();
});
//将Validate类实例绑定到容器中
$container->bind(&#39;validate&#39;, function(){
return new Validate();
});
//将View类实例绑定到容器中
$container->bind(&#39;view&#39;, function(){
return new View();
});
//测试:查看一下当前容器中的类实例
// var_dump($container->instance); die;
/******************************************************************************/
//三、容器依赖:将容器对象,以参数的方式注入到当前工作类中
//用户类:工作类
class User
{
//创建三个成员属性,用来保存本类所依赖的对象
// protected $db = null;
// protected $validate = null;
// protected $view = &#39;&#39;;
//这三个与外部对象对应的三个属性可以全部删除了,因为它们都已经事先注册到了容器中
//用户登录操作
// public function login(Db $db, Validate $validate, View $view)
//此时,只需从外部注入一个容器对象即可,Db,Validate和View实例方法全部封装到了容器中
public function login(Container $container)
{
//实例化Db类并调用connect()连接数据库
// $db = new Db();
// echo $db->connect();
echo $container->make(&#39;db&#39;)->connect();
//实例化Validate类并调用check()进行数据验证
// $validate = new Validate();
// echo $validate->check();
echo $container->make(&#39;validate&#39;)->check();
//实例化视图类并调用display()显示运行结果
// $view = new View();
echo $container->make(&#39;view&#39;)->display();
}
}
//在客户端完成工具类的实例化(即工具类实例化前移)
// $db = new Db();
// $validate = new Validate();
// $view = new View();
//现在注入过程就非常简单了,只需要从外部注入一个容器对象即可
//创建User类
$user = new User();
//调用User对象的login方法进行登录操作
// echo $user->login();
// 将该类依赖的外部对象以参数方式注入到当前方法中,当然,推荐以构造器方式注入最方便
echo &#39;<h3>用依赖容器进行解藕:</h3>&#39;;
// echo $user->login($db, $validate, $view);
//现在工作类中的login方法不需要再像对象依赖注入那样写三个对象了,只需要一个容器对象就可以了
echo $user->login($container);
로그인 후 복사

사실 컨테이너 모드, 외관 디자인 모드를 사용하면 더욱 단순화할 수도 있습니다.

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

프레임워크 개발의 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(1부)

#🎜 🎜#

위 내용은 프레임워크 개발 시 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(중간).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

다중 언어 프레임워크 개발에 PHP를 사용하는 방법은 무엇입니까? 다중 언어 프레임워크 개발에 PHP를 사용하는 방법은 무엇입니까? May 13, 2023 am 08:09 AM

세계화가 심화됨에 따라 점점 더 많은 웹사이트와 애플리케이션이 다국어를 지원해야 합니다. 웹 개발에 널리 사용되는 프로그래밍 언어인 PHP는 다중 언어 프레임워크 개발도 지원해야 합니다. 이 기사에서는 다중 언어 프레임워크 개발에 PHP를 사용하는 방법을 소개합니다. 1. 다국어 프레임워크란 무엇인가요? 먼저 다국어 프레임워크가 무엇인지 알아보겠습니다. 다중 언어 프레임워크는 이름에서 알 수 있듯이 여러 언어를 지원할 수 있는 프레임워크입니다. 국제화 및 지역화 디자인에서는 다국어 프레임워크가 필수적입니다. 다양한 지원이 가능합니다

Go 언어 프레임워크 개발 시 예외 처리 및 오류 코드 설계 Go 언어 프레임워크 개발 시 예외 처리 및 오류 코드 설계 Jun 05, 2023 pm 09:21 PM

인터넷 기술이 지속적으로 발전함에 따라 점점 더 많은 회사에서 Go 언어를 개발에 사용하기 시작했습니다. Go 언어는 효율성, 안정성 및 사용 편의성으로 인해 개발자가 선호합니다. 엔터프라이즈 수준 개발에서 프레임워크는 필수적인 부분입니다. 따라서 본 글에서는 Go 언어 프레임워크 개발에서 예외 처리 및 오류 코드 설계를 수행하는 방법을 소개합니다. 1. 예외 처리란 무엇입니까? 컴퓨터 프로그래밍에서 예외 처리란 프로그램 실행 중 비정상적인 상황이 발생했을 때 프로그램이 취해야 하는 조치를 말합니다. 이러한 이상에는 하드웨어 오류, 소프트웨어 결함이 포함됩니다.

PHP에서 사용자 정의 프레임워크를 구축하는 방법은 무엇입니까? PHP에서 사용자 정의 프레임워크를 구축하는 방법은 무엇입니까? Sep 05, 2023 pm 01:18 PM

PHP에서 사용자 정의 프레임워크를 구축하는 방법은 무엇입니까? 사용자 정의 프레임워크는 웹 개발의 일반적인 요구 사항 중 하나입니다. 개발자는 자체 프레임워크를 구축함으로써 프로젝트의 요구 사항을 더 잘 충족하고 개발 효율성을 높일 수 있습니다. 이 기사에서는 PHP에서 간단한 사용자 정의 프레임워크를 구축하는 방법을 보여줍니다. 1. 프레임워크 구조 일반적인 PHP 프레임워크는 다음 부분을 포함해야 합니다. 라우터: URL을 컨트롤러 및 작업(메서드)에 매핑하는 역할을 담당합니다. 컨트롤러: 요청을 수신하고 처리합니다.

PHP8 프레임워크를 사용하여 MVC 개발: 단계별 가이드 PHP8 프레임워크를 사용하여 MVC 개발: 단계별 가이드 Sep 11, 2023 am 10:05 AM

PHP8 프레임워크를 사용하여 MVC 개발: 단계별 가이드 소개: MVC(Model-View-Controller)는 애플리케이션의 논리, 데이터 및 사용자 인터페이스를 분리하는 데 사용되는 일반적으로 사용되는 소프트웨어 아키텍처 패턴입니다. 코드를 더 잘 관리하고 유지 관리하기 위해 애플리케이션을 세 가지 개별 구성 요소로 분리하는 구조를 제공합니다. 이 기사에서는 PHP8 프레임워크를 사용하여 MVC 패턴을 준수하는 애플리케이션을 개발하는 방법을 살펴보겠습니다. 1단계: MVC 패턴 이해 MVC 애플리케이션 개발을 시작하기 전에 나는

Golang 프레임워크 개발을 배울 때의 사고방식과 주의사항 Golang 프레임워크 개발을 배울 때의 사고방식과 주의사항 Jun 03, 2023 am 08:41 AM

인터넷의 급속한 발전과 함께 효율적인 차세대 프로그래밍 언어인 Golang 언어는 개발자에게 없어서는 안 될 부분이 되었습니다. Golang 언어는 간결한 구문, 효율적인 동시성 성능, 우수한 플랫폼 간 호환성 및 자체 포함 정적 링크 라이브러리로 인해 광범위한 관심과 적용을 받아왔습니다. 이 과정에서 프레임워크의 중요성은 점점 더 분명해졌습니다. Golang 프레임워크 개발을 배울 때 사고방식과 주의사항도 중요합니다. 1. 프레임워크 선택 1. 프레임워크 이해

PHP8 프레임워크로 MVC 개발: 초보자가 알아야 할 중요한 개념과 기술 PHP8 프레임워크로 MVC 개발: 초보자가 알아야 할 중요한 개념과 기술 Sep 11, 2023 am 09:43 AM

PHP8 프레임워크를 사용하여 MVC 개발: 초보자가 알아야 할 중요한 개념 및 기술 소개: 인터넷의 급속한 발전으로 인해 웹 개발은 오늘날 소프트웨어 개발 산업에서 중요한 역할을 하고 있습니다. PHP는 웹 개발에 널리 사용되며 개발자가 애플리케이션을 보다 효율적으로 구축하는 데 도움이 되는 성숙한 프레임워크가 많이 있습니다. 그 중 MVC(Model-View-Controller) 아키텍처는 가장 일반적이고 널리 사용되는 패턴 중 하나입니다. 이 기사에서는 초보자가 PHP8 프레임워크를 사용하여 MVC 애플리케이션을 개발하는 방법을 소개합니다.

golang 프레임워크 개발 프로세스의 최신 진행 상황 golang 프레임워크 개발 프로세스의 최신 진행 상황 Jun 05, 2024 pm 02:52 PM

Golang 프레임워크 개발 프로세스의 최신 진행 상황: 최신 프레임워크: Gin, Echo 및 Fiber와 같은 최신 프레임워크는 고급 기능과 성능 최적화를 제공합니다. 실제 사례: Gin을 사용하여 RESTful API 구축: 사용자 모델 및 컨트롤러를 생성합니다. Gin을 사용하여 HTTP 라우팅 및 요청 구문 분석을 처리합니다. CRUD 작업(생성, 읽기, 업데이트, 삭제)을 구현합니다.

PHP8 프레임워크 개발 MVC 패턴: 코드 유지 관리성을 향상시키는 모범 사례 PHP8 프레임워크 개발 MVC 패턴: 코드 유지 관리성을 향상시키는 모범 사례 Sep 11, 2023 pm 08:12 PM

PHP8 프레임워크 개발 MVC 모델: 코드 유지 관리성을 향상시키는 모범 사례 소개: 인터넷의 급속한 발전으로 인해 웹 사이트와 웹 애플리케이션의 요구 사항은 점점 더 다양해지고 복잡해지고 있습니다. 이러한 요구를 충족하려면 개발자는 효율적이고 안정적인 프레임워크를 사용하여 개발 프로세스를 간소화해야 합니다. 많은 PHP 프레임워크 중에서 MVC(Model-View-Controller) 패턴은 가장 일반적이고 강력한 아키텍처 중 하나입니다. 이 기사에서는 생성을 개선하기 위해 PHP8 프레임워크에서 MVC 패턴을 개발하는 모범 사례를 소개합니다.

See all articles