基礎使用
# 列出全部可用命令
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');
}