0 关注者

类 yii\console\UnknownCommandException

继承yii\console\UnknownCommandException » yii\console\Exception » yii\base\UserException » yii\base\Exception » Exception
可用版本2.0.11
源代码 https://github.com/yiisoft/yii2/blob/master/framework/console/UnknownCommandException.php

UnknownCommandException 表示因错误使用控制台命令而导致的异常。

受保护的属性

隐藏继承的属性

属性 类型 描述 定义于

属性详情

隐藏继承的属性

$application 受保护的属性
$command 公共属性

无法识别的命令的名称。

public string $command null

方法详情

隐藏继承的方法

__construct() 公共方法

构造异常。

public void __construct ( $route, $application, $code 0, $previous null )
$route string

找不到的命令的路由。

$application yii\console\Application

涉及的控制台应用程序实例。

$code integer

异常代码。

$previous Throwable|null

用于异常链的先前异常。

                public function __construct($route, $application, $code = 0, $previous = null)
{
    $this->command = $route;
    $this->application = $application;
    parent::__construct("Unknown command \"$route\".", $code, $previous);
}

            
getName() 公共方法

public string getName ( )
返回值 string

此异常的用户友好名称

                public function getName()
{
    return 'Unknown command';
}

            
getSuggestedAlternatives() 公共方法

根据字符串相似性为 $command 建议替代命令。

使用以下步骤查找替代方案

  • 建议以 $command 开头的替代方案
  • 通过计算未知命令与所有可用命令之间的 Levenshtein 距离来查找拼写错误。 Levenshtein 距离定义为将 str1 转换为 str2 所需的最小字符替换、插入或删除次数。

另请参见 https://php.ac.cn/manual/en/function.levenshtein.php

public array getSuggestedAlternatives ( )
返回值 array

按相似度排序的建议替代方案列表。

                public function getSuggestedAlternatives()
{
    $help = $this->application->createController('help');
    if ($help === false || $this->command === '') {
        return [];
    }
    /** @var $helpController HelpController */
    list($helpController, $actionID) = $help;
    $availableActions = [];
    foreach ($helpController->getCommands() as $command) {
        $result = $this->application->createController($command);
        /** @var $controller Controller */
        list($controller, $actionID) = $result;
        if ($controller->createAction($controller->defaultAction) !== null) {
            // add the command itself (default action)
            $availableActions[] = $command;
        }
        // add all actions of this controller
        $actions = $helpController->getActions($controller);
        $prefix = $controller->getUniqueId();
        foreach ($actions as $action) {
            $availableActions[] = $prefix . '/' . $action;
        }
    }
    return $this->filterBySimilarity($availableActions, $this->command);
}