Giới thiệu Lumen - Microframework Của Laravel
Bài đăng này đã không được cập nhật trong 9 năm
Giới thiệu về Lumen
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.
Điểm mạnh của 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
Cài đặt
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
Cấu hình
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.
Session
Để 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([
Illuminate\Cookie\Middleware\EncryptCookies::class,
Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
Illuminate\Session\Middleware\StartSession::class,
Illuminate\View\Middleware\ShareErrorsFromSession::class,
Laravel\Lumen\Http\Middleware\VerifyCsrfToken::class,
]);
View
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.
Route
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.
Cảm nhận
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é.
All rights reserved