KHUNG PHÁT TRIỂN MẶT SAU

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 109 - 112)

10.1. GIỚI THIỆU

Khung ph{t triển mặt sau (backend framework) là một trong các cơng cụ hỗ trợ lập trình viên tăng tốc độ ph{t triển ứng dụng, viết mã một c{ch gọn g|ng, khoa

học, giảm thiểu viết lại mã v| chuẩn hóa mã lệnh khi x}y dựng c{c ứng dụng web. Hiện nay, ph{t triển ứng dụng web chủ yếu sử dụng khung phát triển mặt sau.

Nhiều khung ph{t triển mặt sau đã ra đời, có thể kể tên nhƣ Visual Studio cho

ph{t triển ứng dụng web trên nền tảng .NET, Struts cho ph{t triển ứng dụng web

với Java, Laravel cho ph{t triển ứng dụng web bằng PHP.

Laravel23 đƣợc đ{nh gi{ có một số ƣu điểm nhƣ dễ c|i đặt, cấu trúc thƣ mục

hợp lý, hỗ trợ nhiều hệ quản trị cơ sở dữ liệu, khai thác các thế mạnh của ORM và

CoC (Code over configuration, coding by convention), quản lý giao diện thuận tiện, dễ d|ng tích hợp c{c thƣ viện của bên thứ ba, hỗ trợ nhiều công cụ phát triển,

cung cấp nhiều môđun thực hiện c{c chức năng chung, v.v..

Chƣơng n|y giới thiệu Laravel với mục đích cung cấp một cái nhìn khái qt

c{ch thức, quy trình sử dụng khung phát triển mặt sau nói chung.

10.2. LARAVEL

10.2.1. Cấu trúc ứng dụng, nguyên lý hoạt động

Ứng dụng Laravel đƣợc xây dựng theo mẫu thiết kế MVC (xem Mục 6.4,

Chƣơng 6), bao gồm nhiều thƣ mục, mỗi một thƣ mục chứa c{c tệp mã lệnh thực

hiện c{c nhiệm vụ kh{c nhau. Cụ thể, thƣ mục app/Http/Controllers chứa c{c tệp cài đặt các lớp điều khiển, thƣ mục resources/views chứa các tệp cài đặt các lớp giao

diện, thƣ mục app/Models chứa các các tệp cài đặt các lớp mơ hình, thƣ mục routes

chứa c{c tệp lƣu trữ to|n bộ thông tin cho định tuyến URL. Thƣ mục config lƣu trữ c{c tệp cấu hình của ứng dụng, thƣ mục database lƣu trữ c{c tệp liên quan đến qu{

trình thao tác cơ sở dữ liệu, thƣ mục public lƣu trữ c{c t|i nguyên kh{c nhƣ hình

ảnh, JavaScript, CSS, <, thƣ mục storage lƣu c{c tệp session, cache v| c{c tệp khác đƣợc sinh ra bởi khung l|m việc. Ngoài ra, thƣ mục tests chứa c{c kịch bản kiểm thử do ngƣời lập trình tạo lập, thƣ mục vendor chứa c{c môđun do bên thứ ba cung cấp.

Bộ điều khiển mặt trƣớc đƣợc cài đặt trong tệp public/index.php. Các yêu cầu

23

WebAppDevLê Đình Thanh, Nguyễn Việt Anh

194

đƣợc đi qua bộ điều khiển mặt trƣớc và đến bộ định tuyến. Bộ định tuyến chuyển hƣớng yêu cầu đến phƣơng thức của c{c lớp điều khiển. Lúc này, lớp điều khiển sẽ thực hiện c{c xử lý phù hợp. Thông thƣờng, lớp điều khiển tƣơng t{c với lớp mơ hình trong giải quyết bài tốn, sau đó đƣa kết quả ra một lớp giao diện để

chuyển kết quả thành nội dung đƣợc gửi cho trình duyệt. Trong một số trƣờng

hợp không cần xử lý phức tạp, lớp điều khiển ngay lập tức tạo một giao diện và gửi trả kết quả cho trình duyệt.

10.2.2. Tạo ứng dụng mới

M{y chủ web cần đ{p ứng đƣợc c{c yêu cầu cơ bản để có thể triển khai ứng dụng Laravel nhƣ phiên bản PHP v| c{c thƣ viện hỗ trợ. Laravel sử dụng một trình quản lý có tên là Composer24 để tải v| giữ cho c{c th|nh phần phụ thuộc

luôn đƣợc cập nhật. Mỗi khi một dự {n mới đƣợc tạo, c{c th|nh phần phụ thuộc

sẽ đƣợc tải về v| c|i đặt v|o m{y chủ web.

Sau khi c|i đặt Composer th|nh công trên m{y chủ web, sử dụng Composer

để tạo ứng dụng mới theo cú ph{p:

composer create-project laravel/laravel <AppName> --prefer-dist

Nếu ứng dụng đƣợc tạo th|nh công, thƣ mục chứa ứng dụng đƣợc tạo với tên l|

AppName có cấu trúc nhƣ đã trình b|y ở trên.

10.2.3. Thiết lập thơng tin định tuyến URL

Thông tin định tuyến đƣợc đặt trong hai tệp routes/web.php và routes/api.php,

trong đó web.php đƣợc bao bởi web middleware v| api.php đƣợc bao bởi api middleware. Có một số lợi ích trong việc n|y. Trƣớc hết, lập trình viên có thể dễ d|ng ph}n biệt giữa đƣờng dẫn web thông thƣờng và đƣờng dẫn đến API. Thứ hai, việc có nhiều tệp thơng tin định tuyến sẽ giúp cho c{c lập trình thuận tiện hơn trong điều chỉnh các ánh xạ đƣờng dẫn.

Đƣờng dẫn (route) đƣợc khai b{o với cú ph{p

Route::method($uri, $callback);

trong đó, method cho biết phƣơng thức định tuyến URL, $uri là mẫu URL và $callback là hàm PHP. Ý nghĩa của khai báo này nhƣ sau: Nếu yêu cầu HTTP nhận

đƣợc có URL khớp với $uri và phƣơng thức HTTP khớp với method thì ứng dụng

thực hiện hàm $callback. Ví dụ, một đƣờng dẫn đơn giản đƣợc khai báo nhƣ sau: 1. <?php

2. // Tệp routes/web.php

3. Route::get('/greeting', function() { return view('welcome'); });

Với đƣờng dẫn này, nếu ngƣời dùng truy cập ứng dụng bằng URL là /greeting

24

WebAppDevLê Đình Thanh, Nguyễn Việt Anh

195 theo phƣơng thức GET, ứng dụng sẽ trả về nội dung của lớp giao diện có tên là

welcome đƣợc định nghĩa trong tệp resources/views/welcome.blade.php.

Laravel hỗ trợ nhiều phƣơng thức định tuyến URL khác nhau, trong đó nhiều

phƣơng thức có tên trùng với tên của phƣơng thức HTTP, bao gồm:

Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback);

Mỗi đƣờng dẫn đƣợc khai báo bởi một trong các phƣơng thức định tuyến đƣợc liệt kê ở trên chỉ chấp nhận một phƣơng thức HTTP. Để tạo đƣờng dẫn chấp nhận nhiều hơn một phƣơng thức HTTP, có thể sử dụng Route::match() và Route::any()

nhƣ ví dụ sau: 1. <?php

2. // Tệp routes/web.php 3. ... 3. ...

4. Route::match(['get', 'post'], '/help', function () {

5. return view('help');

6. });

7.

8. Route::any('/licence', function () { return "Apache Licence"; });

Nếu hàm $callback chỉ đơn thuần trả về một giao diện thì có thể khai báo đƣờng dẫn bằng Route::view() nhƣ ví dụ sau:

1. <?php

2. // Tệp routes/web.php 3. ... 3. ...

4. Route::view('/home', 'home');

Trƣờng hợp muốn chuyển hƣớng trang web, đƣờng dẫn đƣợc khai báo bằng

Route::redirect() nhƣ ví dụ sau:

1. <?php

2. // Tệp routes/web.php 3. ... 3. ...

4. Route::redirect('/here', '/there', 301);

Khi cần đƣa tham số vào đƣờng dẫn, ví dụ định danh (id) của ngƣời dùng, định danh của b|i viết, ta có thể khai b{o tham số trong $uri nhƣ ví dụ sau:

1. <?php

2. // Tệp routes/web.php 3. ... 3. ...

4. Route::get('readers/{readerId}', function ($rid) {

5. return 'Độc giả: '.$rid; 6. }); 6. });

WebAppDevLê Đình Thanh, Nguyễn Việt Anh

196 7.

8. Route::get('posts/{postId}/comments/{commentId}', function($pid, $cid) {

9. return 'Bạn đang đọc bình luận '.$cid.' ở bài viết'.$pid;

10. });

10.2.4. Xây dựng lớp điều khiển

Tất cả lớp điều khiển đƣợc đặt trong thƣ mục app/Http/Controllers. Việc đặt tên

lớp điều khiển và tạo tệp cài đặt lớp điều khiển phải tu}n theo nguyên tắc nhƣ

sau:

 Tất cả c{c lớp điều khiển mới phải đƣợc kế thừa từ lớp Controller của

Laravel. Nếu muốn kế thừa từ một lớp điều khiển khác thì lớp đó phải

kế thừa từ lớp Controller của Laravel.

 Tên lớp điều khiển phải trùng với tên tệp cài đặt lớp. Ví dụ, nếu muốn

tạo lớp điều khiển có tên là UserController thì tệp cài đặt phải có tên là

UserController.php.

Có hai c{ch tạo lớp điều khiển trong Laravel. C{ch thứ nhất là tạo thủ công nhƣ sau:

 Tạo tệp c|i đặt lớp trong thƣ mục app/Http/Controllers.

 Đặt tên lớp l| tên tệp và kế thừa Controller của Laravel.

C{ch thứ hai để tạo lớp điều khiển là sử dụng kịch bản artisian theo cú pháp:

php artisan make:controller <ControllerName>

Ví dụ, câu lệnh

php artisan make:controller BookController

sẽ tạo một lớp điều khiển có tên là BookController với tệp c|i đặt là

app/Http/Controllers/BookController.php.

Khi lớp điều khiển đã đƣợc tạo, công việc kế tiếp là định nghĩa các thuộc tính

và phƣơng thức cho nó. Mỗi phƣơng thức của lớp điều khiển còn đƣợc gọi là một hành động (action). Mã nguồn trong ví dụ sau đ}y định nghĩa hành động show()

cho lớp điều khiển BookController. 1. <?php

2. // Tệp app/Http/Controllers/BookConroller.php 3. namespace App\Http\Controllers; 3. namespace App\Http\Controllers;

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 109 - 112)

Tải bản đầy đủ (PDF)

(126 trang)