Skip to content
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待

Artisan 开发 ​

介绍 ​

除了 Artisan 提供的命令外,您还可以构建自己的自定义命令来处理您的应用程序。您可以将自定义命令存储在 app/commands 目录中;但是,您可以自由选择自己的存储位置,只要您的命令可以根据 composer.json 设置进行自动加载。

构建命令 ​

生成类 ​

要创建一个新命令,您可以使用 command:make Artisan 命令,它将生成一个命令存根以帮助您入门:

生成新命令类 ​

php
php artisan command:make FooCommand

默认情况下,生成的命令将存储在 app/commands 目录中;但是,您可以指定自定义路径或命名空间:

php
php artisan command:make FooCommand --path=app/classes --namespace=Classes

在创建命令时,可以使用 --command 选项来分配终端命令名称:

php
php artisan command:make AssignUsers --command=users:assign

编写命令 ​

一旦生成了命令,您应该填写类的 name 和 description 属性,这将在 list 屏幕上显示您的命令时使用。

fire 方法将在执行命令时被调用。您可以在此方法中放置任何命令逻辑。

参数和选项 ​

getArguments 和 getOptions 方法是您可以定义命令接收的任何参数或选项的地方。这两个方法返回一个命令数组,数组选项由一系列数组选项描述。

在定义 arguments 时,数组定义值表示以下内容:

php
array($name, $mode, $description, $defaultValue)

参数 mode 可以是以下任意值:InputArgument::REQUIRED 或 InputArgument::OPTIONAL。

在定义 options 时,数组定义值表示以下内容:

php
array($name, $shortcut, $mode, $description, $defaultValue)

对于选项,参数 mode 可以是:InputOption::VALUE_REQUIRED、InputOption::VALUE_OPTIONAL、InputOption::VALUE_IS_ARRAY、InputOption::VALUE_NONE。

VALUE_IS_ARRAY 模式表示该开关在调用命令时可以多次使用:

php
php artisan foo --option=bar --option=baz

VALUE_NONE 选项表示该选项仅用作“开关”:

php
php artisan foo --option

检索输入 ​

在执行命令时,您显然需要访问应用程序接受的参数和选项的值。为此,您可以使用 argument 和 option 方法:

检索命令参数的值 ​

php
$value = $this->argument('name');

检索所有参数 ​

php
$arguments = $this->argument();

检索命令选项的值 ​

php
$value = $this->option('name');

检索所有选项 ​

php
$options = $this->option();

编写输出 ​

要将输出发送到控制台,您可以使用 info、comment、question 和 error 方法。每个方法将使用适当的 ANSI 颜色来实现其目的。

向控制台发送信息 ​

php
$this->info('在屏幕上显示此内容');

向控制台发送错误消息 ​

php
$this->error('出现问题了!');

提问 ​

您还可以使用 ask 和 confirm 方法提示用户输入:

向用户询问输入 ​

php
$name = $this->ask('你叫什么名字?');

向用户询问秘密输入 ​

php
$password = $this->secret('密码是什么?');

向用户询问确认 ​

php
if ($this->confirm('您是否希望继续? [是|否]'))
{
	//
}

您还可以为 confirm 方法指定一个默认值,该值应为 true 或 false:

php
$this->confirm($question, true);

注册命令 ​

注册 Artisan 命令 ​

一旦您的命令完成,您需要将其注册到 Artisan,以便可以使用。通常在 app/start/artisan.php 文件中完成此操作。在此文件中,您可以使用 Artisan::add 方法注册命令:

php
Artisan::add(new CustomCommand);

注册在 IoC 容器中的命令 ​

如果您的命令在应用程序 IoC 容器 中注册,您可以使用 Artisan::resolve 方法使其可用于 Artisan:

php
Artisan::resolve('binding.name');

在服务提供者中注册命令 ​

如果您需要从服务提供者中注册命令,您应该在提供者的 boot 方法中调用 commands 方法,传递命令的 IoC 容器 绑定:

php
public function boot()
{
	$this->commands('command.binding');
}

调用其他命令 ​

有时您可能希望从命令中调用其他命令。您可以使用 call 方法做到这一点:

php
$this->call('command:name', array('argument' => 'foo', '--option' => 'bar'));