我正在开发基于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();
bootstrap()
即。 https://github.com/laravel/framework/blob/5.4/src/Illuminate/Console/Application.php#L58输出符合预期。
现在我正在寻找一种方法来停止/控制{{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;