Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명

藏色散人
풀어 주다: 2021-02-23 09:20:37
앞으로
4330명이 탐색했습니다.

튜토리얼 칼럼에서 소개한 내용입니다. 필요한 친구들에게 도움이 되길 바랍니다!

laravel 프레임워크를 사용해 본 친구들은 laravel 프레임워크가 몇 가지 기본 기능(예: 컨트롤러, 뷰, 모델)을 제공하는 것 외에도 미들웨어, Facade, 계약 등도 포함한다는 것을 알고 있습니다. ? 라라벨 프레임워크를 사용하는 방법은 무엇입니까? 오늘은 자세히 이야기해보겠습니다. Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명

먼저 laravel 프레임워크의 아키텍처 패턴을 이해해야 합니다(

Design core
, laravel 프레임워크는 서비스 컴포넌트 개발 모델을 사용하여 개발되며, laravel 프레임워크는 다양한 서비스 컴포넌트로 구성됩니다)

Laravel은 다음과 같이 구성됩니다. 여러 서비스 제공자 Laravel 구성 요소. 계층적 설계: 동일한 기능을 가진 클래스 라이브러리를 동일한 폴더에 배치합니다. laravel 프레임워크에는 서비스를 구성하는 여러 클래스가 있고, 여러 서비스가 구성 요소를 구성합니다. 클래스 -> 서비스 -> 컴포넌트

Laravel은
다중 클래스 -> 서비스 -> 컴포넌트를 사용하며, 여러 클래스가 하나의 컴포넌트를 구성합니다.
여러 구성 요소가 서로 다른 서비스를 제공하고, 여러 서비스가 우리 프로젝트를 구성합니다.

요청 라이프 사이클

대략적인 프로세스는 그림과 같습니다.


이론적으로 라이프 사이클은 주로 이러한 단계로 구성되지만 그 중 대부분의 개발자는
라우팅, 미들웨어, 컨트롤러, 및 클로저 함수, 논리 처리Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명및 기타 단계

물론 각 단계 내에는 여전히 더 자세한 실행 프로세스가 있을 것입니다. 여기서는 일반적으로 프레임워크를 깊이 연구하거나 프레임워크를 변환하지 않으며 자세히 연구하는 경우는 거의 없습니다. 기본 레이어를 연구하는 것은 여전히 ​​학습을 위한 좋은 선택입니다.

Service

는 laravel에서 제공하는 서비스에는 인증 서비스, 데이터베이스 서비스, 캐시 서비스, 대기열 서비스 등이 포함됩니다. laravel 프레임워크의 모든 서비스는 app/config/app.php


Service Providerapp/config/app.php 里面


服务提供者
可以给你提供一组服务的东西就是服务提供者,laravel里面如上所示其实定义的服务器提供者,比如IlluminateAuthAuthServiceProvider::class,提供认证服务的服务提供者。IlluminateCacheCacheServiceProvider::class,提供缓存服务的服务提供者

好处:开发者可以节省下更多的精力去处理项目逻辑,且不同开发个体之间能达到一定默契,最重要的是,项目达到分层解耦,业务逻辑只依赖于服务,并不依赖于服务底层的实现。
解耦之后,我们可以任意升级或自定义服务的底层实现,只要确保底层类实现了该服务

总结:其实服务是一个抽象的概念,服务器提供者是完成这个抽象概念的具体实施者

服务容器
把所有的服务放在一个盒子里,存放服务的容器。laravel里面的服务容器位于

vendor/laravel/frameworksrcilluminateContainerContainer.php.
로그인 후 복사

Container.php

에 정의되어 있습니다. 서비스 집합을 제공할 수 있는 것은 위에서 언급한 대로 laravel에서 언급한 서비스 공급자입니다. 인증 서비스를 제공하는 서비스 공급자인 IlluminateAuthAuthServiceProvider::class와 같이 실제로 정의된 서버 공급자를 나타냅니다. IlluminateCacheCacheServiceProvider::class, 캐싱 서비스를 제공하는 서비스 제공자

이점:
개발자는 프로젝트 로직을 처리하는 데 더 많은 에너지를 절약할 수 있으며, 서로 다른 개발 인력 간에 일정한 암묵적인 이해가 이루어질 수 있습니다. 가장 중요한 것은 프로젝트가 계층적 분리를 달성하고 비즈니스 로직은 서비스에만 의존하며 서비스의 기본 구현에는 의존하지 않는다는 것입니다.

분리 후 기본 클래스가 서비스를 구현하는지 확인하는 한 서비스의 기본 구현을 마음대로 업그레이드하거나 사용자 정의할 수 있습니다.


요약: 사실 서비스는 추상적인 개념이고 서버 공급자는 이 추상 개념의 구체적인 구현

서비스 컨테이너

는 모든 서비스를 상자에 넣고 서비스 컨테이너를 저장합니다. laravel의 서비스 컨테이너는 laravel 프레임워크의 서비스 컨테이너인

IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,
로그인 후 복사
로그인 후 복사
Container.php에 있습니다.

Contract
는 서비스 제공자의 형식, 방법, 매개변수 등을 계획하는 데 사용되며 서비스 제공자의 특정 제약 조건을 규제합니다. 따라서 프레임워크 내의 모든 계약은 인터페이스이므로 서비스 제공자를 표준화할 수 있습니다.
Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명

Facade🎜🎜Facade는 Laravel의 디자인 우수성을 다시 한 번 보여줍니다. 이는 Laravel을 더욱 유연하고 쉽게 확장할 수 있게 해줍니다. 그 개념은 다음과 같습니다. 🎜1 서비스 컨테이너의 서비스에 대한 정적 프록시를 제공합니다.🎜🎜 2 서비스 액세스를 보완합니다. 이전에는 서비스를 사용하려면 서비스 인스턴스를 얻은 후 서비스 메서드를 호출해야 했지만 Facade를 사용하면 서비스를 정적 ​​객체로 직접 호출할 수 있습니다. 🎜🎜3 config/app.php의 대부분의 서비스 별칭은 Facade를 사용합니다🎜🎜4 Facade를 사용하는 것은 위험하며, 많이 사용할수록 좋은 것은 아니지만, 매뉴얼에 약간의 소개가 있습니다. , 개발 중에도 발견해야 합니다🎜🎜 🎜🎜Laravel 프레임워크 전체 아키텍처 다이어그램🎜🎜🎜🎜

如上图所示:laravel框架是由多个服务组件构成的 -> 服务提供者(最下面的不同的服务组件)。
FoundationApplication 用来创建服务提供者,创建好之后保存在ContainerContainer 的服务容器里面,交由他管理,Application 要继承 Container
为了约定服务提供者提供的服务,我们定义一个规范,这就是契约

对于我们的用户(最上面的用户)想使用laravel框架,必须通过控制器来使用(上面的Controller),使用laravel框架主要是使用laravel里面的服务提供者(上面的 new 服务),这样就是最传统的开发模式,和服务器容器没有直接关系,如果laravel这样设计的话,基本上和其他框架一样,没有任何优势。所以一般不怎么做。

由于有契约,契约是服提供者的接口,所以我们也可以直接使用契约,new 服务旁边的黄色线。使用契约用注入的方式,这样使用的不好之处是如果一个方法里面使用多个契约的话,我们就得注入多个契约,这样代码看起来不优雅。


于是laravel里面就出现了门面,门面的出现方便我们优雅的调用服务器提供者的类。由于每个服务提供者的类太长了如:

IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,
로그인 후 복사
로그인 후 복사

所以又引出了别名,使用别名之后 简化了我们调用的服务提供者的类。

事件:laravel里面的模型里面的事件,比如用户对数据库操作时做的一个监听。对整个项目运行进行监听,有监听的动作。类似tp5里面的钩子和行为。
中间件:做用户的请求做一定的过滤。

위 내용은 Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿