Artisan 开发
简介
除了 Artisan 本身提供的命令之外,您也可以为您的应用程序建立属于你自己的命令。你可以将自定义命令存放在 app/Console/commands
目录底下;然而,您也可以任意选择存放位置,只要您的命令能够被 composer.json
自动加载。
建立自定义命令
自动创建类(Class)
要创建一个新的自定义命令,您可以使用 make:console
这个 Artisan 命令,这将会自动产生一个 Command stub 协助您开始创建您的自定义命令:
自动创建一个新的命令类
php artisan make:console FooCommand
上面的命令将会协助你自动创建一个类,并保存为文件 app/Console/Commands/FooCommand.php
。
在创建自定义命令时,加上 --command
这个选项,将可以指定之后在终端机使用此自定义命令时,所要输入的自定义命令名称:
php artisan make:console AssignUsers --command=users:assign
撰写自定义命令
一旦你的自定义命令被创建后,你需要填写自定义命令的 名称(name)
与 描述(description)
,您所填写的内容将会被显示在 Artisan 的 list
画面中。
当您的自定义命令被执行时,将会调用 fire
方法,您可以在此为自定义命令加入任何的逻辑判断。
参数与选项
你可以通过 getArguments
与 getOptions
为自定义命令自行定义任何需要的参数与选项。这两个方法都会返回一组命令数组,并由选项数组的清单所组成。
当定义 arguments
时,该数组值的定义分别如下:
[$name, $mode, $description, $defaultValue]
参数 mode
可以是下列其中一项: InputArgument::REQUIRED
或 InputArgument::OPTIONAL
。
当定义 options
时,该数组值的定义分别如下:
[$name, $shortcut, $mode, $description, $defaultValue]
对选项而言,参数 mode
可以是下列其中一项:InputOption::VALUE_REQUIRED
, InputOption::VALUE_OPTIONAL
, InputOption::VALUE_IS_ARRAY
, InputOption::VALUE_NONE
。
模式为 VALUE_IS_ARRAY
表示调用命令时可以多次使用此选项来传入多个值:
InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY
Would then allow for this command:
php artisan foo --option=bar --option=baz
模式为 VALUE_NONE
则表示将此选项纯粹作为一种有或无的「开关」使用:
php artisan foo --option
取得输入值(参数与选项)
当您 的自定义命令执行时,您需要让您的应用程序可以访问到这些参数和选项的值,要做到这一点,您可以使用 argument
和 option
方法:
取得自定义命令被输入的参数
$value = $this->argument('name');
取得自定义命令被输入的所有参数
$arguments = $this->argument();
取得自定义命令被输入的选项
$value = $this->option('name');
取得自定义命令被输入的所有选项
$options = $this->option();
产生输出
想要显示信息到终端屏幕上,您可以使用 info
、comment
、question
和 error
方法。每一种方法将会依据它所代表的目的,分别对应一种适当的 ANSI 颜色。
显示一般消息到终端屏幕
$this->info('Display this on the screen');