Laravel Artisan 命令行的使用

Posted 小伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\');
}

以上是关于Laravel Artisan 命令行的使用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Artisan 命令行的使用

VSCode 中的 Xdebug 不会在命令行的 Laravel artisan 命令的断点处停止

如何在代码 Laravel 中使用 Artisan 命令?

我在 laravel 中运行“php artisan serve”命令时出错,它给出以下错误

Laravel 的Artisan 命令学习

Laravel 5 - 如何从 Artisan 命令运行控制器方法?