如何隐藏" php artisan list"中的默认工匠命令命令?

时间:2017-03-30 18:43:21

标签: php laravel command-line-interface laravel-5.4 artisan

我正在开发基于Laravel 5.4的CLI应用程序。

我已经创建了自定义命令,它们正在按预期工作。

我面临的问题是,无论何时我运行php artisan list,它都会显示所有命令 - 我的自定义命令和默认的工匠命令。

我只需在打包的应用中显示自定义命令。

有什么方法可以解决这个问题吗?

我已经检查了https://laracasts.com/discuss/channels/general-discussion/remove-default-commands-from-artisan并且解决了Laravel 5.4无法解决的问题。

我已经检查了Remove command from php artisan list,但它要求提供具体的命令。我想从framework/src/Illuminate/Console/Application.php删除所有内置命令。

更新

我发现了一种肮脏的方式:

如果我从$this->bootstrap();

注释掉第58行
bootstrap()

即。 https://github.com/laravel/framework/blob/5.4/src/Illuminate/Console/Application.php#L58输出符合预期。

现在我正在寻找一种方法来停止/控制{{1}}功能/过程。

1 个答案:

答案 0 :(得分:3)

要隐藏php artisan list - 中的命令,这只会隐藏命令而不会将其禁用 -

在进入如何隐藏它之前,让我们看看$hidden对象内的属性Illuminate\Console\Command,默认情况下它是假的,当你将它设置为true时,你会得到所有隐藏你的工匠名单。

要隐藏特定命令,您需要将此属性设置为隐藏在要隐藏其命令的每个类中,

例如,当您点击php artisan list时,会按如下方式提示列表:

.....
cache
  cache:clear          Flush the application cache
  cache:forget         Remove an item from the cache
  cache:table          Create a migration for the cache database table
.....

这意味着,负责clearing the cache的对象位于Illuminate\Cache\Console

现在隐藏缓存:清除命令,在Illuminate \ Cache \ Console中你会得到ClearCommand.php对象。

更新它并将属性$hidden设置为true,如下所示:

protected $hidden = true;