具有多个“方法”的自定义工匠命令(采用迁移方式:安装等)

时间:2013-11-11 13:35:29

标签: laravel-4

我正在为我的Laravel 4应用程序创建一个自定义工匠命令(foo)。我可以从userguide看到如何接受参数和选项,例如

php artisan foo argument --option

但是,如果我想要一个具有许多“方法”的自定义工匠命令,与一些内置工匠命令相同的风格,例如, 迁移:安装?我想做一些像:

php artisan foo:baz argument --option

基于冒号分隔符实现不同方法的推荐方法是什么?到目前为止我发现的所有尝试都是为每种“方法”制作一个全新的工匠命令。有更有效的方法吗?

2 个答案:

答案 0 :(得分:2)

您只需设置名称:

protected $name = 'foo:baz';

答案 1 :(得分:0)

你是对的,你需要一个新的Artisan命令(或者更确切地说是一个类)。但是,您只需在app/Console/Kernel.php中注册每个文件,如果您决定稍后更改语法,Laravel会自动将其更改为$signature,而无需重命名任何文件。

对于您提到的Laravel示例, migrate ,每个命令名称都有一个单独的文件目录(包括没有冒号的文件):

/供应商/ laravel /框架/ SRC /照亮/数据库/控制台/迁移

  • migrate - > MigrateCommand.php
  • migrate:install - > InstallCommand.php
  • migrate:refresh - > RefreshCommand.php
  • migrate:reset - > ResetCommand.php
  • migrate:rollback - > RollbackCommand.php
  • migrate:status - > StatusCommand.php

如果您有要重复使用的代码(DRY),请注意,如果您检查上述命令,其中一些命令会使用traits,例如 Illuminate \ Console \ ConfirmableTrait - 其中包含 confirmToProceed()方法,如果它在生产中运行,将询问用户是否确实要继续。

注意:Artisan语法在5.1中已更改,从$name(使用相当复杂的方式指定参数和选项)变为更简单的$signature,它向后兼容。 More info