엔트리포인트는 public/index.php
라라벨의 첫번째 동작은 서비스 컨테이너 인스턴스 생성
모든 incoming request는 HTTP 커널 또는 콘솔 터널에 보내진다.
HTTP Kernel 위치는 app/Http/Kernel.php
이고, request가 실행되기 전에 실행되는 bootstrappers 배열을 정의하는 Illuminate\Foundation\Http\Kernel
클래스를 상속받는다.
또한 어플리케이션에서 처리되기 전에 모든 request가 통과해야 하는 HTTP middleware 목록도 정의한다.
HTTP Kernel의 handle
메서드는 Request
를 받아서 Response
를 리턴한다.
kernel bootstrapping action에서 가장 중요한 것 중 하나가 내 어플리케이션의 서비스 프로바이더를 로딩하는 것이다. 어플리케이션의 모든 서비스 프로바이더는 config/app.php
파일의 providers
배열에 설정되어 있다.
라라벨이 배열을 돌면서 목록에 있는 모든 프로바이더를 인스턴스화하면 프로바이더는 register
메서드를 호출하고, 모든 프로바이더가 등록되면 각 프로바이더는 다시 boot
메서드를 호출한다.
서비스 프로바이더는 프레임워크가 제공하는 모든 컴포넌트를 부트스트래핑하기 때문에 라라벨 부트스트래핑 과정에서 제일 중요한 부분이다.
어플리케이션이 브트스트래핑 되고 모든 서비스 프로바이더가 등록되면 request가 라우터에 전달된다. 라우터는 request를 라우트나 컨트롤러에 전달하고 특정 라우트에 지정된 미들웨어를 실행한다.
라라벨 어플리케이션 부트스트래핑의 핵심은 서비스 프로바이더이다.
어플리케이션 인스턴스가 생성되고 서비스 프로바이더가 등록되면 부트스트랩 된 어플리케이션이 요청을 받아서 처리한다.
(작성중)