隐藏 Laravel Artisan 控制台命令,使其不在可用命令列表中显示
发布于 作者 Eric L. Barnes
当您向世界发布产品或软件包时,您可能有一些 Artisan 控制台命令,这些命令仅用于安装或其他特殊情况,您不希望在有人运行 php artisan
时将其显示在列表中。
使用命令隐藏属性进行隐藏
Laravel 提供了一种简单的方法来隐藏命令,方法是在命令类上设置 hidden
属性,如下所示
class DestructiveCommand extends Command{ protected $signature = 'db:resetdb'; protected $description = 'DESTRUCTIVE! do not run this unless you know what you are doing'; // Hide this from the console list. protected $hidden = true;
使用 setHidden 方法进行隐藏
如果您想更进一步,Brian Dillingham 在 Twitter 上分享了一个关于如何使用 setHidden
方法以编程方式实现这一点的绝妙技巧
✨Laravel 软件包技巧:在安装后,将安装命令从
php artisan
中隐藏起来,以保持整洁。 pic.twitter.com/o4PK8xXkIk— Brian Dillingham (@im_brian_d) 2021 年 1 月 2 日
以下是其屏幕截图中代码的更易于复制/粘贴的版本
class Install extends Command{ protected $signature = 'package:install'; protected $description = 'Install Package'; public function __construct() { parent::__construct(); if (file_exists(config_path('package.php'))) { $this->setHidden(true); } }
使用这两种方法中的任何一种,您的控制台命令将不再显示在控制台中运行 php artisan
时,当然,如果有人知道签名,他们仍然可以手动运行它,因此这仅对隐藏在列表中而不是阻止其实际运行有用。