繁体   English   中英

如何从命令的“php artisan list”中隐藏默认的 artisan 命令?

[英]How to hide default artisan commands from "php artisan list" of commands?

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

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

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

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

有没有办法解决这个问题?

我已经检查了https://laracasts.com/discuss/channels/general-discussion/remove-default-commands-from-artisan和解决方案,因为它不适用于 Laravel 5.4。

我已经检查了从 php artisan list 中删除命令,但它要求特定命令。 我想从php artisan list中删除所有内置命令。

更新

我找到了一个肮脏的方式:

如果我从framework/src/Illuminate/Console/Application.php中注释掉第 58 行

$this->bootstrap();

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

现在我正在寻找一种停止/控制bootstrap()函数/进程的方法。

php artisan list隐藏命令 -这只会隐藏命令并且不会禁用它-

在讨论如何隐藏它之前,让我们看一下Illuminate\Console\Command对象中的$hidden属性,默认情况下它是一个 false ,当你将它设置为 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中。

现在隐藏 cache:clear command ,在 Illuminate\Cache\Console 中,您将获得ClearCommand.php对象。

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

protected $hidden = true;

如果要隐藏默认命令,可以通过创建具有相同签名的命令来覆盖它们,然后添加。

 protected $hidden = true;

到班级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM