반응형
Kernel
컴퓨터에 커널은 보안, 자원관리, 하드웨어 추상화 등 운영체제의 핵심적인 역할을 합니다.
이와 마찬가지로 라라벨에서의 커널도 마찬가지로 중요한 역할을 수행합니다.
역할
- 사용자의 요청을 미들웨어에 전달하고 예외가 발생 시 알맞은 응답으로 처리합니다.
- 미들웨어를 거친 후 라우터로 전달된 요청은 해당 라우터에 연결된 로직을 처리합니다.
- 클로저나 컨트롤러에 반환되는 최종 응답을 클라이언트에게 제공합니다.
라라벨의 커널의 특징
- 커널을 2개가 있지만 HTTP 커널과 Console 커널로 이름과 같이 서로의 쓰임새도 다릅니다.
- 요청을 처리하기 전 준비 작업에서 환경(dev, production, local)을 판단하고 서비스 프로바이더를 준비합니다.
HTTP 커널
-
bootstrappers(시작 코드)을 정의합니다. (에러 처리, 로그 설정)
-
미들웨어 목록 로딩
-
HTTP 세션을 읽기/쓰기를 합니다.
- CSRF 토큰 확인합니다.
-
애플리케이션의 점검 모드 확인, 점검 모드일 때는 모든 라우트가 503 상태 코드와 MaintenanceModeException 반환합니다.
-
Console 커널
- Cron, artisan에 사용합니다.
Service Provider
커널 부팅(부트스트래핑) 과정 코드는 대부분이 수많은 서비스 프로바이더로 되어있습니다.
특징
- config/app.php 파일의 providers 배열에 설정되어 있다.
- DB, Queue, Validation, Routing 등 부팅(부트스트래핑)의 처리를 책임지기에 가장 중요하다
- 부팅(부트스트래핑)하는 데 필요한 로직을 캡슐화한 클래스이다.
- 애플리케이션 코드를 작동시키기 전, 사전에 실행해야하는 코드는 서비스 프로바이더에 넣는 것이 적합하다.
주요 기능
-
register()
등록된 서비스 프로바이더에서 해당 메서드를 통해 인스턴스를 컨테이너에 저장합니다. (바인딩)
-
boot()
저장된 인스턴스를 호출해서 실행합니다.
반응형
'PHP > Laravel' 카테고리의 다른 글
[Laravel] Laravel8에다가 React와 vue 올리기 (laravel/ui) (0) | 2021.04.05 |
---|---|
[Laravel] 컴포넌트 총정리 (0) | 2021.04.03 |
[LifeCycle] 라라벨 Public/index.php (0) | 2021.03.03 |
[Homestead] mysql 8에서 5.7로 다운그레이드 (0) | 2021.02.10 |
PhpStorm에서 Homestead mysql 연결하는 법 (0) | 2021.02.08 |