2017년 3월 22일 수요일

라라벨(laravel) 동작정리

1. 모든 시작점
public/index.php

2. apache/nginx 요청

3. include  bootstrap/app.php 실행(서비스 컨테이너 인스턴스를 생성);

4. 서비스 컨테이너 인스턴스를 생성

5. 각 요청에 따라 http커널 or console커널로 보냄

5.1. HTTP 커널은 Illuminate\Foundation\Http\Kernel 클래스를 상속하고 있으며, 요청을 실행하기 전에 처리되는 bootstrappers (시작 코드)의 배열을 정의하고 있습니다. 이 시작 코드들은 에러 처리, 로그 설정, 어플리케이션 동작 환경의 감지 등 실제로 요청이 처리되기 전에 수행해야 되는 작업들을 의미합니다.

5.1.1 커널 부팅(부트스트래핑) 과정의 가장 중요한 것 중의 하나는 어플리케이션의 서비스 프로바이더를 로딩하는 것입니다. 어플리케이션의 모든 서비스 프로바이더는 config/app.php 파일의 providers 배열에 설정되어 있습니다. 먼저, 모든 서비스 프로바이더의 register 메소드가 호출되고, 이후에 등록 된 모든 서비스 프로바이더의 boot 메소드가 호출되어 집니다.

서비스 프로바이더는 프레임워크의 데이터베이스, 큐, validation, 라우팅 컴포넌트와 같은 다양한 컴포넌트의 부트스트래핑(부팅과 같은 기초 작업들)의 처리를 책임집니다. 프레임워크가 제공하는 모든 기능을 초기화 하고 설정하는 것으로, 서비스 프로바이더는 라라벨의 부팅(부트스트래핑) 과정에서 가장 중요한 기능이라고 할 수 있습니다.