12/08/2018, 13:03

Giới thiệu Lumen - Microframework Của Laravel

Laravel là framework mới ra đời nhưng đã nhanh chóng trở thành số 1 trong số các PHP framework. Laravel mang rất nhiều những ưu điểm các các framework hiện đại từ các ngôn ngữ khác như Rails / Spring. Tuy vậy Laravel vẫn có một nhược điểm và số lượng module dùng tương đối lớn, dẫn đến tốc độ không ...

Laravel là framework mới ra đời nhưng đã nhanh chóng trở thành số 1 trong số các PHP framework. Laravel mang rất nhiều những ưu điểm các các framework hiện đại từ các ngôn ngữ khác như Rails / Spring. Tuy vậy Laravel vẫn có một nhược điểm và số lượng module dùng tương đối lớn, dẫn đến tốc độ không được tối ưu khi xây những service nhỏ. Vì thế cách đây mới nửa tháng, Taylor Otwell đã release một phiên bản microframework là Lumen.

Xem ảnh trên từ trang chủ của Lumen có thể thấy microframework này có tốc độ vượt trội so với các microframework cùng loại khác trên thị trường.

Ngoài ra thì nếu sử dụng Lumen sau này bạn muốn nâng cấp ứng dụng lên mức cao hơn thì việc chuyển sang Laravel cũng rất dễ dàng

Việc cài đặt lumen hoàn toàn tương tự như Laravel thôi, mình nghĩ đơn giản nhất vẫn là dùng composer

curl -sS https://getcomposer.org/installer | php

Việc đầu tiên là bạn cần rename lại file .env.example thành .env sau đó nên chỉnh lại nội dung file .env thêm key vào, key này dùng để mã hóa session và cookie.

Không như Laravel, Lumen ko hỗ trợ việc generate key nên bạn phải tự làm và nhập vào (hơi buồn).

Ngoài ra theo mình nên chỉnh lại CACHE_DRIVER và SESSION_DRIVER từ memcached về file vì thường mới dùng bạn sẽ chưa cài memcached.

Tiếp theo để Lumen nhận cấu hình thì bạn cần vào file: bootstrap/app.php và bỏ comment dòng này: Dotenv::load().

Không giống như Laravel có rất nhiều file config, với Lumen bạn chỉ có 1 file .env duy nhất.

Để enable session thì bạn cần vào file bootstrap/app.php và bỏ comment tất cả middlewware trong hàm $app->middleware()

 $app->middleware([
      IlluminateCookieMiddlewareEncryptCookies::class,
      IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
      IlluminateSessionMiddlewareStartSession::class,
      IlluminateViewMiddlewareShareErrorsFromSession::class,
      LaravelLumenHttpMiddlewareVerifyCsrfToken::class,
 ]);

Phần view trong tài liệu của Lumen viết rất hạn chế và không nói gì đến Blade, nhưng mình đã chạy thử và thấy nó vẫn hỗ trợ dùng Blade để làm view.

Phần route bạn vẫn dùng các http method như với Laravel

$app->get('/', function () {
    return 'Hello World';
});

$app->post('foo/bar', function () {
    return 'Hello World';
});

$app->put('foo/bar', function () {
    //
});

$app->delete('foo/bar', function () {
    //
});

Tuy nhiên có 1 điều lưu ý là Lumen ko hỗ trợ bạn khai báo route controller nữa, bạn sẽ phải tự khai báo get/post đến từng action trong controller.

Nói chung mình thấy dùng Lumen có thể đem lại performance tốt hơn cho ứng dụng nhỏ của bạn, tuy nhiên nó sẽ hạn chế đi rất nhiều tính năng mà mình thấy cần thiết ở mọi ứng dụng nên hãy cân nhắc kỹ trước khi chọn Lumen hay Laravel nhé.

0