Tìm hiểu Laravel Zero
Laravel Zero là một framework php cung cấp giải pháp phát triển console application được phát triển bởi Nuno Maduro. Nó là một phiên bản không chính thức và được tùy chỉnh của Laravel để tối ưu hóa cho ứng dụng dòng lệnh. Một số điểm nổi bật của Laravel Zero: Được xây dựng dựa trên các Laravel ...
Laravel Zero là một framework php cung cấp giải pháp phát triển console application được phát triển bởi Nuno Maduro. Nó là một phiên bản không chính thức và được tùy chỉnh của Laravel để tối ưu hóa cho ứng dụng dòng lệnh.
Một số điểm nổi bật của Laravel Zero:
- Được xây dựng dựa trên các Laravel Component
- Tùy chỉnh cài đặt Laravel Eloquent, Laravel Logging và nhiều thứ khác
- Hỗ trợ desktop notification trên Linux, Windows và MacOS
- Hoạt động với Scheduler
Yêu cầu và cài đặt
Yêu cầu: PHP 7.1.3+
Tạo mới project với Composer:
composer create-project --prefer-dist laravel-zero/laravel-zero <your-app-name>
Khởi chạy ứng dụng, chạy câu lệnh sau tại thư mục gốc của ứng dụng:
php <your-app-name>
Bạn có thể thay đổi tên cùa ứng dụng
php <your-app-name> app:rename <new-name>
AppCommands
Tạo mới command
php <your-app-name> make:command <NewCommand>
Liên quan đến nội dung của file command:
- Định nghĩa input của command: Các bạn có thể tham khảo ở đây https://laravel.com/docs/5.6/artisan#defining-input-expectations.
protected $signature = 'user:create {name : The name of the user} // required {--age= : The age of the user}'; // optional.
- Các lệnh Input/Output: Các bạn có thể tham khảo ở đây https://laravel.com/docs/5.6/artisan#command-io để hiểu thêm về yêu cầu của các input và các lệnh bằng cách sừ dụng line, info, comment, question và error method.
-
Desktop notifications
$this->notify("Hello Web Artisan", "Love beautiful..", "icon.png");
-
Tasks
$this->task("Installing Laravel", function () { return true; }); $this->task("Doing something else", function () { return false; });
-
Menu tương tác (Interactive Menus)
$option = $this->menu('Pizza menu', [ 'Freshly baked muffins', 'Freshly baked croissants', 'Turnovers, crumb cake, cinnamon buns, scones', ])->open(); $this->info("You have chosen the option number #$option");
Bạn có thể tùy chỉnh giao diện của menu:
$this->menu($title, $options) ->setForegroundColour('green') ->setBackgroundColour('black') ->setWidth(200) ->setPadding(10) ->setMargin(5) ->setExitButtonText("Abort") // remove exit button with // ->disableDefaultItems() ->setUnselectedMarker('❅') ->setSelectedMarker('✏') ->setTitleSeparator('*-') ->addLineBreak('<3', 2) ->addStaticItem('AREA 2') ->open();
AppServiceProviders
Laravel Zero khuyến khích sử dụng Laravel Service Providers cho việc định nghĩa các triển khai cụ thể, Chúng được khai báo tại appProvidersAppServiceProvider.php hoặc khởi tạo mới 1 service provider.
public function register() { $this->app->singleton(Contract::class, function ($app) { return new Concrete(config('database')); }); } app(Contract::class) // Returns a Concrete implementation.
Database
Laravel Zero cho phép bạn cài đặt một Database
php <your-app-name> app:install database
Sử dụng
use IlluminateSupportFacadesDB; DB::table('users')->insert( ['email' => 'enunomaduro@gmail.com'] ); $users = DB::table('users')->get();
Bạn có thể sử dụng tính năng Migration và Seeding của Laravel.
Log
Laravel Zero cho phép bạn cài đặt thành phần Log.
php <your-app-name> app:install log
Sự dụng tương tự như trong Laravel
use IlluminateSupportFacadesLog; Log::emergency($message); Log::alert($message); Log::critical($message); Log::error($message); Log::warning($message); Log::notice($message); Log::info($message); Log::debug($message);
Filesystem
Tương tự với Laravel:
use IlluminateSupportFacadesStorage; Storage::put("reminders.txt", "Task 1");
Scheduler
Laravel sử dụng Task Scheduling của Laravel. Để sử dụng bạn cần thêm đoạn Crontab sau đây vào server của bạn.
* * * * * php /path-to-your-project/your-app-name schedule:run >> /dev/null 2>&1
Bạn có thể định nghĩa tất cả các task của scheduler trong phương thức schedule của command:
public function schedule(Schedule $schedule): void { $schedule->command(static::class)->everyMinute(); }
Environment Configuration
Bạn có thể muốn cài đặt DotEnv PHP. Nó khá là hữu ích để quản lý các config cho các môi trường khác nhau của ứng dụng:
php <your-app-name> app:install dotenv
Cài đặt trên sẽ tạo ra một file .env.example không có nội dung tại thư mục gốc của bạn. Bạn nên tạo file .env để chứa các giá trị của biến môi trường. Ví dụ như
SECRET_KEY=234567
Bạn có thể lấy các giá trị này với helper env():
echo env('SECRET_KEY') // outputs 234567