如何检查 Laravel 控制台命令是否存在?

How check if a Laravel Console Command Exists?

我需要检查 Laravel 控制台命令是否存在,以及它是否在受保护的命令 var 中以调用它们。

我需要从另一个 Laravel 控制台命令调用它们。我想知道是否有类似 exists_command('mycommand:foo')

有什么办法可以实现吗?

php artisan list

将显示所有可能的 artisan 命令。有一个包含您自己创建的命令的 'command' 小节。

你可以这样称呼它们

php artisan command:MyCreatedCommand

编辑:要检查项目中是否存在命令,您可以使用 php class_exists 函数

if(class_exists('App\Console\Commands\MyCommandName')){
  //Do whatever
 }

已测试并正常工作。

function command_exists($name)
{
    return array_has(\Artisan::all(), $name);
}

if (command_exists('config:cache')) {
    // success
}

虽然@Sandeesh是对的,但我们可以这样查看:

function exists_command($name)
{
    return array_key_exists($name, \Artisan::all());
}

if (exists_command('mycommand:foo')) {
    // success
}

即使是更短的方式,

function exists_command($name)
{
    return $this->getApplication()->has($name);
}