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');
}

你可能感兴趣的:(phplavarel)