12/08/2018, 15:55

Lumen - A micro-framework by Laravel [Part 1]

Laravel là một framework hiện đại của PHP, 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, có thể coi là framework dễ dùng và thích dùng nhất đối với PHP trong thời điểm hiện tại. Ra đời tháng 4 năm 2011 bởi Taylor Otwell, Laravel dần lấy được ...

The stunningly fast micro-framework by Laravel. Laravel là một framework hiện đại của PHP, 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, có thể coi là framework dễ dùng và thích dùng nhất đối với PHP trong thời điểm hiện tại. Ra đời tháng 4 năm 2011 bởi Taylor Otwell, Laravel dần lấy được thiện cảm của cộng đồng PHP và trở thành thay thế cho các framework cũ kỹ như Cake hay Zend, ...

Gần đây Laravel đã ra phiên bản 5.4 mang rất nhiều cải tiến. 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ế Taylor Otwell đã release một phiên bản microframework của Laravel là Lumen.

Lumen

Decidedly Laravel. Delightfully Minimal. Lightning fast micro-services and APIs delivered with the elegance you expect.

Bạn có thể coi Lumen là phiên bản thu nhỏ của laravel, nó nhanh hơn laravel rất nhiều và được tối ưu để xây dựng API. Trong bài viết này mình sẽ hướng dẫn các bạn cài đặt, cấu hình và tìm hiểu về Lumen.

Cài đặt Lumen

Requirements của Lumen:

  • PHP >= 5.6.4
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension

Lumen sử dụng Composer để quản lý dependencies. Vậy trước khi cài đặt Lumen, composer phải được cài đặt trước trên máy tính của bạn. Có 2 cách để cài đặt Lumen:

  • Sử dụng Lumen Installer
composer global require "laravel/lumen-installer"

# Sau khi cài đặt installer
lumen new blog

Sau khi cài đặt installer các bạn có thể tạo mới project Lumen bằng câu lệnh lumen new TÊN_PROJECT. Install Lumen

  • Sử dụng composer create-project
composer create-project --prefer-dist laravel/lumen blog

Tương tự với laravel, các bạn cũng có thể tạo mới project lumen bằng cách sử dụng lệnh create-project của composer.

Cấu trúc thư mục của Lumen

Sau khi tạo mới project thành công, chúng ta sẽ có cấu trúc project như sau:

  • app là thư mục chứa các file cấu hình, lưu trữ, tập lệnh của laravel, trong đó gồm có:
    • Console: các command sử dụng trong laravel
    • Events: thư mục chứa event, events có thể được sử dụng để thông báo đến các thành phần khác trong ứng dụng về một hành động đã xảy ra, events rất linh hoạt và tách biệt.
    • Exceptions: thư mục chứa các class ngoại lệ xử lý các trường hợp ngoại lệ của ứng dụng.
    • Http: chứa các controller và middleware
    • Jobs: thư mục chức class Job, là nơi xử lý các kỹ thuật liên quan đến hàng đợi (queue) và đồng bộ (synchronously) trong ứng dụng của bạn.
    • Listeners: Chứa cá class handler xử lý các Event trả lại kết quả.
    • Providers: là nơi chứa các class đăng ký (register) các ServiceProvider.
    • User.php: Model mặc định được tạo ra
  • artisan: tool mà Laravel cung cấp sẵn trong project, dùng để thực thi các lệnh CLI (command line interface) để hỗ trợ phát triển ứng dụng.
  • bootstrap: chứa file app.php file thiết lập cơ bản để bắt đầu chạy ứng dụng và file cấu hình nạp class tự động.
  • composer.json: là tập tin chứa các thiết lập về việc cài đặt, cập nhật ứng dụng bằng lệnh composer.
  • database: Bên trong chứa các folder factories, migration và seeder cơ sỡ dữ liệu của ứng dụng.
  • public: là thư mục gốc chứa file index.php Laravel dùng để chạy ứng dụng, đây cũng là nơi chứa các tài nguyên của ứng dụng như js, css …
  • resources: nơi chứa các template views, asset và các file ngôn ngữ.
  • routes: Chứa file web.php có vai trò chỉ đường cho yêu cầu (request) đi đến đâu.
  • storage: Chứa các file đã biên dịch từ các file view xài Blade template, chứa file sessions, caches và các file được sinh ra tự động của framework
  • tests: chứa các file testcase của ứng dụng.
  • vendor: chứa bộ mã nguồn của lumen và các thành phần đi kèm, cũng như các gói (packages) sau này sẽ thêm vào lumen
  • .env: chứa các config của lumen

Thiết lập cơ bản cho Lumen

Cài đặt tinker

Laravel Tinker is a powerful REPL for the Laravel framework.

Tinker là một bộ công cụ rất mạnh mẽ của Laravel, tuy nhiên mặc định nó không được đi kèm trong Lumen. Các bạn có thể cài đặt tinker hoặc không, tuy nhiên mình nghĩ nên cài đặt nó:

composer require laravel/tinker

# Register TinkerServiceProvider
# boostrap/app.php
$app->register(LaravelTinkerTinkerServiceProvider::class);

# Run
php artisan tinker

Không giống như laravel, Lumen không có thư mục config nên các cấu hình của lumen đều nằm ở .env. Đầu tiên chúng cần tạo .env để lưu các config cho lumen:

cp .env.example .env

# Tạo App key
php artisan tinker
>>> str_random(32)
=> "YkLlij5hcWFD9wfjqXaffbwhMyfvpJWt"

Sau khi tạo APP_KEY thành công, bạn thêm nó vào trong file .env Tiếp theo nếu trên máy tính của bạn chưa có sẵn mencache bạn cần phải config lại CACHE_DRIVER=memcached thành CACHE_DRIVER=file. Để sử dụng Facade bạn cần bỏ comment ở dòng 26, tương tự với Eloquent ở dòng 28

...
26 //$app->withFacades();
27
28 //$app->withEloquent();
...

Về cơ bản chúng ta đã cài đặt và config xong Lumen. Các bạn có thể config virtualhost cho project mới này hoặc chạy câu lệnh dưới đây và xem thành quả.

php -S 127.0.0.1:8080 -t public

View mặc định sẽ hơi xấu 1 chút cho nên mình edit 1 chút, tạo mới file welcome.blade.php trong thư mục resources/view/ với nội dung các bạn có thể tham khảo tại đây. Sau đó chỉnh sửa routes/web.php một chút để nó trỏ tới view mà bạn vừa tạo.

$app->get('/', function () use ($app) {
    return view('welcome'); // welcome là tên view mà mình đã tạo ở trên `welcome.blade.php`
});

Lumen Các bạn có thể thấy version hiện tại của Lumen và các Laravel Components.

Trong Part 2 sắp tới, mình sẽ hướng dẫn các bạn xây dựng API hoàn chỉnh với Lumen             </div>
            
            <div class=

0