Mô hình vòng đời của một request khi được gửi đến trong Laravel framework
1. Khởi động (Bootstrap)
Khi một request đến ứng dụng Laravel, đầu tiên nó sẽ đi qua file public/index.php
. Đây là entry point của ứng dụng.
File: public/index.php
<?php
// Định nghĩa đường dẫn tới root của ứng dụng
define('LARAVEL_START', microtime(true));
// Autoload các file cần thiết
require __DIR__.'/../vendor/autoload.php';
// Khởi động ứng dụng
$app = require_once __DIR__.'/../bootstrap/app.php';
// Xử lý request và trả về response
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
Trong quá trình khởi động, Laravel sẽ đăng ký và khởi động các service providers, các dịch vụ cần thiết cho ứng dụng.
File: config/app.php
'providers' => [
// Các service providers của Laravel
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
// ...
// Các service providers tùy chỉnh của bạn
App\Providers\RouteServiceProvider::class,
// ...
],
Request sẽ được gửi đến HTTP Kernel
, lớp này được định nghĩa trong file app/Http/Kernel.php
. Tại đây, request sẽ đi qua các middleware.
File: app/Http/Kernel.php
class Kernel extends HttpKernel
{
protected $middleware = [
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
// ...
];
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
// ...
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// ...
];
}
Sau khi request vượt qua middleware, nó sẽ được định tuyến đến controller thích hợp dựa trên route.
File: routes/web.php
use App\Http\Controllers\HomeController;
Route::get('/', [HomeController::class, 'index']);
Route::get('/about', [HomeController::class, 'about']);
File: app/Http/Controllers/HomeController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index()
{
return view('welcome');
}
public function about()
{
return view('about');
}
}
Nếu controller trả về một view, Laravel sẽ render view thành HTML.
File: resources/views/welcome.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome to Laravel!</h1>
</body>
</html>
Response được gửi lại cho client.
public function index()
{
return response()->json([
'message' => 'Hello, World!'
]);
}
Trên đây là các bước chi tiết của vòng đời request trong Laravel, từ khi nhận được request, qua các middleware, định tuyến đến controller, và cuối cùng trả về response. Mỗi bước đều có thể được tùy chỉnh theo nhu cầu của ứng dụng, giúp Laravel trở thành một framework mạnh mẽ và linh hoạt.
Tham khảo:
https://viblo.asia/p/tap-5-vong-doi-request-laravel-request-lifecycle-laravel-LzD5dwqOljY
https://laravel.com/docs/11.x/lifecycle
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE