튜토리얼 칼럼에서 소개한 내용입니다. 필요한 친구들에게 도움이 되길 바랍니다!
laravel 프레임워크를 사용해 본 친구들은 laravel 프레임워크가 몇 가지 기본 기능(예: 컨트롤러, 뷰, 모델)을 제공하는 것 외에도 미들웨어, Facade, 계약 등도 포함한다는 것을 알고 있습니다. ? 라라벨 프레임워크를 사용하는 방법은 무엇입니까? 오늘은 자세히 이야기해보겠습니다.
먼저 laravel 프레임워크의 아키텍처 패턴을 이해해야 합니다(Design core
, laravel 프레임워크는 서비스 컴포넌트 개발 모델을 사용하여 개발되며, laravel 프레임워크는 다양한 서비스 컴포넌트로 구성됩니다)
Laravel은 다음과 같이 구성됩니다. 여러 서비스 제공자 Laravel 구성 요소. 계층적 설계: 동일한 기능을 가진 클래스 라이브러리를 동일한 폴더에 배치합니다. laravel 프레임워크에는 서비스를 구성하는 여러 클래스가 있고, 여러 서비스가 구성 요소를 구성합니다. 클래스 -> 서비스 -> 컴포넌트
Laravel은
다중 클래스 -> 서비스 -> 컴포넌트를 사용하며, 여러 클래스가 하나의 컴포넌트를 구성합니다.
여러 구성 요소가 서로 다른 서비스를 제공하고, 여러 서비스가 우리 프로젝트를 구성합니다.
이론적으로 라이프 사이클은 주로 이러한 단계로 구성되지만 그 중 대부분의 개발자는
라우팅, 미들웨어, 컨트롤러, 및 클로저 함수, 논리 처리및 기타 단계
Service
app/config/app.php
Service Providerapp/config/app.php
里面
服务提供者
可以给你提供一组服务的东西就是服务提供者,laravel里面如上所示其实定义的服务器提供者,比如IlluminateAuthAuthServiceProvider::class
,提供认证服务的服务提供者。IlluminateCacheCacheServiceProvider::class
,提供缓存服务的服务提供者
好处:开发者可以节省下更多的精力去处理项目逻辑,且不同开发个体之间能达到一定默契,最重要的是,项目达到分层解耦,业务逻辑只依赖于服务,并不依赖于服务底层的实现。
解耦之后,我们可以任意升级或自定义服务的底层实现,只要确保底层类实现了该服务
总结:其实服务是一个抽象的概念,服务器提供者是完成这个抽象概念的具体实施者
服务容器
把所有的服务放在一个盒子里,存放服务的容器。laravel里面的服务容器位于
vendor/laravel/frameworksrcilluminateContainerContainer.php.
Container.php
IlluminateAuthAuthServiceProvider::class
와 같이 실제로 정의된 서버 공급자를 나타냅니다. IlluminateCacheCacheServiceProvider::class
, 캐싱 서비스를 제공하는 서비스 제공자이점:
개발자는 프로젝트 로직을 처리하는 데 더 많은 에너지를 절약할 수 있으며, 서로 다른 개발 인력 간에 일정한 암묵적인 이해가 이루어질 수 있습니다. 가장 중요한 것은 프로젝트가 계층적 분리를 달성하고 비즈니스 로직은 서비스에만 의존하며 서비스의 기본 구현에는 의존하지 않는다는 것입니다.
요약: 사실 서비스는 추상적인 개념이고 서버 공급자는 이 추상 개념의 구체적인 구현
IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,
Container.php
에 있습니다.
Contract
는 서비스 제공자의 형식, 방법, 매개변수 등을 계획하는 데 사용되며 서비스 제공자의 특정 제약 조건을 규제합니다. 따라서 프레임워크 내의 모든 계약은 인터페이스이므로 서비스 제공자를 표준화할 수 있습니다.
如上图所示:laravel框架是由多个服务组件构成的 -> 服务提供者(最下面的不同的服务组件)。Foundation
的 Application
用来创建服务提供者,创建好之后保存在Container
的 Container
的服务容器里面,交由他管理,Application
要继承 Container
。
为了约定服务提供者提供的服务,我们定义一个规范,这就是契约。
对于我们的用户(最上面的用户)想使用laravel框架,必须通过控制器来使用(上面的Controller),使用laravel框架主要是使用laravel里面的服务提供者(上面的 new 服务),这样就是最传统的开发模式,和服务器容器没有直接关系,如果laravel这样设计的话,基本上和其他框架一样,没有任何优势。所以一般不怎么做。
由于有契约,契约是服提供者的接口,所以我们也可以直接使用契约,new 服务旁边的黄色线。使用契约用注入的方式,这样使用的不好之处是如果一个方法里面使用多个契约的话,我们就得注入多个契约,这样代码看起来不优雅。
于是laravel里面就出现了门面,门面的出现方便我们优雅的调用服务器提供者的类。由于每个服务提供者的类太长了如:
IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,
所以又引出了别名,使用别名之后 简化了我们调用的服务提供者的类。
事件:laravel里面的模型里面的事件,比如用户对数据库操作时做的一个监听。对整个项目运行进行监听,有监听的动作。类似tp5里面的钩子和行为。
中间件:做用户的请求做一定的过滤。
위 내용은 Laravel 프레임워크의 핵심 아키텍처에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!