12/08/2018, 17:11

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.
  1. Desktop notifications

    $this->notify("Hello Web Artisan", "Love beautiful..", "icon.png");
    
  2. Tasks

    $this->task("Installing Laravel", function () {
    	return true;
    });
    
    $this->task("Doing something else", function () {
    	return false;
    });
    
  3. 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

0