- vừa được xem lúc

[Laravel Architecture] Request Lifecycle

0 0 16

Người đăng: phptojvb

Theo Viblo Asia

Xin chào các bạn, tiếp tục series Laravel Architecture, hôm nay mình giới thiệu đến các bạn một Architecture trong Laravel mà hầu hết các bạn đều thấy rất quen thuộc, đó chính là Request Lifecycle. Request Lifecycle này không chỉ có Laravel mới có, mà hầu hết các framework về web đều có thuật ngữ này, từ các framework của Php như: Laravel, Cakephp, Zend, Yii, ... đến các framework của Js như: Reactjs, Vuejs, ... đến các framework của Python như: django, flask, .... Bởi vì các framework web này mục đích chính là làm việc với http protocal, xử lý các request và trả về response cho client. Trong Laravel thì Request Lifecycle sẽ được xử lý như thế nào, mời các bạn cùng quan sát sơ đồ xử lý sau:

I. Giải thích sơ bộ

Nào ta hãy giải thích qua về sơ đồ trên nhé

1. User/Client là tác nhân gửi request

Có thể là từ trình duyệt, từ postman, từ 1 ctrinh call api, ...

2. Public/index.php

Đây là file khởi động ứng dụng laravel Bootstrap/autoload.php: Tự động tạo các class loader danh cho ứng dụng Bootstrap/app.php: khởi động ứng dụng

3. App/http/kernel.php:

Trung tâm xử lý request

4. Service Providers

Http kernel sẽ load Service Providers

5. Router

Request được gửi đến Router xử lý.

6. Middleware

7. Controller

Request sẽ được chuyển đến controller để lý nghiệp vụ

8. View

Render ra view và trả lại cho User/Client

II. Giải thích chi tiết

1. User/Client là tác nhân gửi request

Có thể là từ trình duyệt, từ postman, từ 1 ctrinh call api, ...

2. Public/index.php

Vị trí trong code: public/index.php Nào mình cùng xem code của file index.php này Bắt đầu bằng

require __DIR__.'/../vendor/autoload.php';

Đầu tiên sẽ include file composer autoload Tiếp theo

$app = require_once __DIR__.'/../bootstrap/app.php';

Sẽ khởi động laravel và tạo ra một application laravel instance.

3. App/http/kernel.php

Vị trí trong code: Illuminate\Contracts\Http\Kernel ( nằm trong core của Laravel) Application laravel instance được tạo ở bước 2 sẽ nhận request đến và được xử lý bởi Http/Kernel. Ở đây sẽ load những config file, nhận biết môi trường, và quan trọng nhất là load service providers

4. Service Providers

Vị trí trong code: khai báo trong file config/app.php Là nơi khai báo các service providers được dùng. Khi chạy làm 2 nhiệm vụ

4.1 Đăng ký service provider (Register service provider)

4.2 Khởi động service provider (Bootstrap service provider)

Khi bạn vào file config/app.php bạn sẽ thấy phần 'providers' khai báo các Service quan trọng của Laravel như: AuthServiceProvider, BroadcastServiceProvider, BusServiceProvider, ... Đây là những service provider này lại khởi động những service chính của laravel như: App, Cache, DB, Crypt

5. Router

Vị trí trong code: routes/web.php, routes/api.php, ...

Route::get( 'profile/{id}', [UserProfileController::class, 'show']
)->name('top2')->where('id', '[0-9]+')->middleware('auth');

Router quy định

  1. các quy tắc cho router: format profile/{id}, id in 0~9
  2. nơi xử lý: UserProfileController@show
  3. nằm trong middeware('auth') hay group nào

6. Middleware

Tạo ra các bộ quy tắc mục đích để lọc các request.

7. Controller

Request sẽ được chuyển đến controller để lý nghiệp vụ

8. View

Render ra view và trả lại cho User/Client

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 368

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 460

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 163

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 84

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 242