Laravel Artisan 命令行的使用

基礎使用

# 列出全部可用命令
php artisan list

# 查看命令幫助
php artisan help migrate

編寫命令

php artisan make:command SendEmails
# app/Console/Commands/SendEmails.php

namespace App\Console\Commands;

use App\User;
use App\DripEmailer;
use Illuminate\Console\Command;

class SendEmails extends Command
{
    /**
     * 命令行的名稱及簽名
     */
    protected $signature = 'email:send {user}';

    /**
     * 命令行的描述
     */
    protected $description = 'Send drip e-mails to a user';

    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 命令運行內容
     */
    public function handle(DripEmailer $drip)
    {
        $drip->send(User::find($this->argument('user')));
    }
}
命令參數和選項
// 必填參數
email:send {user}

// 可選參數
email:send {user?}

// 帶有默認值的可選參數
email:send {user=foo}

// 選項,傳入即爲true,不然爲false
email:send {user} {--queue}

// 接收選項值
email:send {user} {--queue=}

// 選項的默認值
email:send {user} {--queue=default}

// 選項簡寫
email:send {user} {--Q|queue}

// 輸入數組;php artisan email:send foo bar
email:send {user*}

// 選項數組;php artisan email:send --id=1 --id=2
email:send {user} {--id=*}

// 輸入說明
email:send
    {user : The ID of the user}
    {--queue= : Whether the job should be queued}
獲取輸入
$userId = $this->argument('user');

$arguments = $this->arguments();

$queueName = $this->option('queue');

$options = $this->options();
編寫輸出
# 輸出文本
$this->line('Display this on the screen');

# 輸出信息
$this->info('Display this on the screen');

# 輸出錯誤
$this->error('Something went wrong!');

# 輸出表格
$headers = ['Name', 'Email'];
$users = App\User::all(['name', 'email'])->toArray();
$this->table($headers, $users);

# 輸出進度條
$users = App\User::all();
$bar = $this->output->createProgressBar(count($users));
$bar->start();
foreach ($users as $user) {
    $this->performTask($user);
    $bar->advance();
}
$bar->finish();

註冊命令

# app/Console/Kernel.php

// 手動註冊命令
protected $commands = [
    Commands\SendEmails::class
];

// 自動掃描目錄註冊命令
protected function commands()
{
    $this->load(__DIR__.'/Commands');
    require base_path('routes/console.php');
}
相關文章
相關標籤/搜索