Laravel lifecycle
# Description
# Application initialization
Khởi tạo application và binding các important service (Kernel, ExceptionHandler) tại boostrap/app.php
Đối với Http Request, tất cả request sẽ được web server (apache, nginx) điều hướng đến file public/index.php để khởi tạo application theo config:
# Apache DocumentRoot "< app directory path >/public" # Nginx server { . . . root < app directory path >/public; . . . }
1
2
3
4
5
6
7
8
9index.php
- Load composer autoload
- Khởi tạo Laravel Application tại
boostrap/app.php
- Resolved
Illuminate\Http\Kernel
và handle kernel.
Đối với Console Request (khi sử dụng command cli như
php artisan ..
):xử lí khởi tại tạo file
artisan
tương tự như trên nhưng sẽ resolvedIlluminate\Contracts\Console\Kernel
# Http/Console Kernel:
Http Kernel: file concrete
app/Http/Kernel.php
cho contractIlluminate\Http\Kernel
Load qua các bootstrap classes và thực hiện xử lí bootstrap trước khi xử lí request. Chi tiết hơn Laravel binding các class này vào container và run method
bootstrap()
của riêng từng class. Xem tạiIlluminate\Foundation\Application::bootstrapWith()
.\Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables
: load environment, sử dụng packagevlucas/phpdotenv
\Illuminate\Foundation\Bootstrap\LoadConfiguration
: load tất cả config vào instanceIlluminate\Config\Repository
. Trường hợp đã cache config (khi runphp artisan config:cache
) sẽ get tại filecache/config.php
còn không sẽ get tất cả file*.php
trong folder config.\Illuminate\Foundation\Bootstrap\HandleExceptions
: set các tham số môi trường liên quan đến handle exception...\Illuminate\Foundation\Bootstrap\RegisterFacades
: Đăng kí các facade alias cho các instance trong configapp.alias
. Chi tiết facade thì có thể xem tại https://ninhnguyen22.github.io/blog/docs/nin/facade.html (opens new window)\Illuminate\Foundation\Bootstrap\RegisterProviders::class
: Register các service provider. Chi tiết service provider xem https://ninhnguyen22.github.io/blog/docs/nin/service-provider.html (opens new window)\Illuminate\Foundation\Bootstrap\BootProviders
: Binding các class liên quan của provider hoặc các xử lí riêng của provider.
Define các middleware cho route. Có 3 loại Glocal middleware($middleware), middleware group($middlewareGroups) và middleware route($routeMiddleware). Sử dụng Pipeline, xử lí request với từng middleware.
Nếu pass qua các middleware. Laravel xử lí make controller trong container và call method của controller tương ứng với request.
Console Kernel: to be continue..