요청주기
ㅋㅋ
- In troduction
- "일상생활"에서 어떤 도구를 사용할 때, 도구의 작동 원리를 이해합니다. 그러면 사용하기가 더 편리해질 것입니다. 애플리케이션 개발에서도 마찬가지입니다. 기능 뒤에 숨은 구현 원리를 제대로 이해할 수 있으면 사용하기가 더 쉽고 편리해집니다. 이 문서의 목적은 Laravel 프레임워크가 어떻게 작동하는지 더 명확하게 이해하는 것입니다. 모든 것이 더 이상 "마법"처럼 느껴지지 않도록 프레임워크를 통해 전체적인 관점을 확보하세요. 저를 믿으십시오. 이것은 당신이 하고 있는 일을 더 잘 인식하고 하고 싶은 일에 대해 더 자신감을 갖는 데 도움이 될 것입니다. 모든 용어를 이해하지 못하더라도 자신감을 잃지 마세요! 조금만 시도해 보고 사용 방법을 배우면 문서의 다른 부분을 살펴보면서 지식이 확실히 늘어날 것입니다.
우선
Laravel 애플리케이션의 모든 요청 항목은 public/index.php
파일입니다. 모든 요청은 구성을 통해 웹 서버(Apache/Nginx)를 통해 이 파일로 전달됩니다. index.php
파일에는 코드가 많지 않지만 나머지 프레임워크를 로드하기 위한 시작점입니다. public/index.php
文件。而所有的请求都是经由你的 Web 服务器(Apache/Nginx)通过配置引导到这个文件。 index.php
文件代码并不多,但是,这里是加载框架其它部分的起点。
index.php
文件加载 Composer 生成的自动加载设置,然后从 bootstrap/app.php
脚本中检索 Laravel 应用程序的实例。 Laravel 本身采取的第一个动作是创建一个应用程序 / 服务容器。
HTTP / Console 内核
接下来, 根据进入应用程序的请求类型来将传入的请求发送到 HTTP 内核或控制台内核。而这两个内核是用来作为所有请求都要通过的中心位置。 现在,我们先看看位于 app/Http/Kernel.php
中的 HTTP 内核。
HTTP 内核继承了 IlluminateFoundationHttpKernel
类,该类定义了一个 bootstrappers
数组。 这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理, 日志, 检测应用环境,以及其它在请求被处理前需要执行的任务。
HTTP 内核还定义了所有请求被应用程序处理之前必须经过的 HTTP 中间件 ,这些中间件处理 HTTP 会话 读写、判断应用是否处于维护模式、 验证 CSRF 令牌 等等。
HTTP 内核的 handle
方法签名相当简单:获取一个 Request
,返回一个 Response
。可以把该内核想象作一个代表整个应用的大黑盒子,输入 HTTP 请求,返回 HTTP 响应。
服务提供者
内核启动操作中最重要的便是你应用的 服务提供者 了。所有应用下的服务提供者均配置到了 config/app.php
配置文件中的 providers
数组中。 第一步,所有服务提供者的 register
方法会被调用,然后一旦所有服务提供者均注册后, boot
方法才被调用。
服务提供者给予框架开启多种多样的组件,像数据库,队列,验证器,以及路由组件。只要被启动服务提供者就可支配框架的所有功能,所以服务提供者也是 Laravel 整个引导周期最重要组成部分。
请求调度
一旦启动且所有服务提供者被注册,Request
index.php
파일은 Composer가 생성한 자동 로드 설정을 로드한 다음 bootstrap/app.php
스크립트에서 Laravel 애플리케이션의 인스턴스를 검색합니다. Laravel 자체에서 수행하는 첫 번째 작업은 애플리케이션/서비스 컨테이너를 생성하는 것입니다. app/Http/Kernel.php
에 있는 HTTP 커널을 살펴보겠습니다. 부트스트래퍼
배열을 정의하는 IlluminateFoundationHttpKernel
클래스를 상속합니다. 이 배열의 클래스는 요청이 실행되기 전에 실행됩니다. 이러한 부트스트래퍼는 오류 처리, 로깅, 애플리케이션 환경 확인 및 요청이 처리되기 전에 수행해야 하는 기타 작업을 구성합니다. 🎜🎜HTTP 코어는 모든 요청이 애플리케이션에서 처리되기 전에 통과해야 하는 HTTP 미들웨어도 정의합니다. 이러한 미들웨어는 HTTP 세션 읽기 및 쓰기를 처리하고 애플리케이션이 유지 관리 모드에 있는지 확인하고 CSRF 토큰을 확인하는 등의 작업을 수행합니다. 🎜🎜HTTP 코어의 handle
메서드 서명은 매우 간단합니다. 요청
을 받고 응답
을 반환합니다. 이 커널을 HTTP 요청을 받고 HTTP 응답을 반환하는 전체 애플리케이션을 나타내는 큰 블랙박스로 생각하십시오. 🎜서비스 제공자
🎜커널 시작 작업에서 가장 중요한 것은 애플리케이션의 서비스 제공자입니다. 모든 애플리케이션의 서비스 공급자는config/app.php
구성 파일의 providers
배열에서 구성됩니다. 첫 번째 단계에서는 모든 서비스 제공자의 register
메소드가 호출되고, 모든 서비스 제공자가 등록되면 boot
메소드가 호출됩니다. 🎜🎜서비스 제공자는 프레임워크를 통해 데이터베이스, 대기열, 유효성 검사기 및 라우팅 구성 요소와 같은 다양한 구성 요소를 활성화할 수 있습니다. 서비스 제공자가 시작되는 한 프레임워크의 모든 기능을 제어할 수 있으므로 서비스 제공자는 라라벨의 전체 부팅 주기에서 가장 중요한 구성 요소이기도 합니다. 🎜예약 요청
🎜시작하고 모든 서비스 제공업체가 등록되면요청
이 라우터로 전달됩니다. . 라우터는 요청을 바인딩된 경로나 컨트롤러, 그리고 물론 경로 바인딩 미들웨어로 전달합니다. 🎜🎜🎜🎜🎜🎜🎜서비스 제공자에 집중
서비스 제공자는 Laravel의 진정한 라이프사이클의 핵심입니다. 애플리케이션 인스턴스가 생성되면 서비스 제공자가 등록된 다음 실행된 애플리케이션에 의해 인계되도록 요청됩니다. 간단하게 유지하세요!
서비스 제공자가 어떻게 구성되고 Laravel 애플리케이션과 어떻게 작동하는지 확실히 이해하는 것은 매우 중요합니다. 물론, 애플리케이션의 기본 서비스 제공자는 app/Providers
아래에 저장됩니다. app/Providers
下面。
默认的, AppServiceProvider
AppServiceProvider
는 비어 있습니다. 이 공급자는 애플리케이션의 자체 부트스트랩 처리 및 서비스 컨테이너 바인딩을 추가하기에 좋은 장소입니다. 물론 대규모 프로젝트에서는 더 세분화된 서비스 공급자를 여러 개 만들고 싶을 수도 있습니다. 웹사이트에 처음 게시되었습니다.