[LifeCycle] 라라벨 Kernel, Service provider

2021. 3. 3. 14:26· PHP/Laravel
목차
  1. Kernel
  2. Service Provider

Kernel

컴퓨터에 커널은 보안, 자원관리, 하드웨어 추상화 등 운영체제의 핵심적인 역할을 합니다.

이와 마찬가지로 라라벨에서의 커널도 마찬가지로 중요한 역할을 수행합니다.

 

역할 

  1. 사용자의 요청을 미들웨어에 전달하고 예외가 발생 시 알맞은 응답으로 처리합니다.
  2. 미들웨어를 거친 후 라우터로 전달된 요청은 해당 라우터에 연결된 로직을 처리합니다.
  3. 클로저나 컨트롤러에 반환되는 최종 응답을 클라이언트에게 제공합니다.

라라벨의 커널의 특징

  • 커널을 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)  (1) 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
  1. Kernel
  2. Service Provider
'PHP/Laravel' 카테고리의 다른 글
  • [Laravel] Laravel8에다가 React와 vue 올리기 (laravel/ui)
  • [Laravel] 컴포넌트 총정리
  • [LifeCycle] 라라벨 Public/index.php
  • [Homestead] mysql 8에서 5.7로 다운그레이드
DSeung
DSeung
Dev logDSeung 님의 블로그입니다.
DSeung
Dev log
DSeung
  • 분류 전체보기 (193)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (10)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[LifeCycle] 라라벨 Kernel, Service provider
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.