我正在为我的Laravel 4应用程序创建一个自定义工匠命令(foo)。我可以从userguide看到如何接受参数和选项,例如
php artisan foo argument --option
但是,如果我想要一个具有许多“方法”的自定义工匠命令,与一些内置工匠命令相同的风格,例如, 迁移:安装?我想做一些像:
php artisan foo:baz argument --option
基于:冒号分隔符实现不同方法的推荐方法是什么?到目前为止我发现的所有尝试都是为每种“方法”制作一个全新的工匠命令。有更有效的方法吗?
答案 0 :(得分:2)
您只需设置名称:
protected $name = 'foo:baz';
答案 1 :(得分:0)
你是对的,你做需要一个新的Artisan命令(或者更确切地说是一个类)。但是,您只需在app/Console/Kernel.php
中注册每个文件,如果您决定稍后更改语法,Laravel会自动将其更改为$signature
,而无需重命名任何文件。
对于您提到的Laravel示例, migrate ,每个命令名称都有一个单独的文件目录(包括没有冒号的文件):
/供应商/ laravel /框架/ SRC /照亮/数据库/控制台/迁移
如果您有要重复使用的代码(DRY),请注意,如果您检查上述命令,其中一些命令会使用traits,例如 Illuminate \ Console \ ConfirmableTrait - 其中包含 confirmToProceed()方法,如果它在生产中运行,将询问用户是否确实要继续。
注意:Artisan语法在5.1中已更改,从$name
(使用相当复杂的方式指定参数和选项)变为更简单的$signature
,它向后兼容。 More info