【发布时间】:2020-05-16 23:56:34
【问题描述】:
编辑这是 Psalm 的事,不是 PHP MD 的事。
我正在编写一个 Symfony 控制台命令。在其execute 方法中,我使用$input->getArgument('argument_name') 方法检索参数。我将这个值传递给一个服务,它期望这个值是字符串类型的。
整体代码:
protected function execute(InputInterface $input, OutputInterface $output)
{
if (is_string($input->getArgument('identifier'))) {
$identifier = $input->getArgument('identifier');
} else {
return 2;
}
if ($input->getArgument('mode') === "vehicle") {
$this->vehicleService->getVehicleInfo($identifier);
return null;
}
if ($input->getArgument('mode') === "company") {
$this->vehicleService->getCompanyVehiclesInfo($identifier);
return null;
}
return 1;
}
PHP MD Psalm 没有看到我已经确认 $identifier 是一个字符串,然后将其作为参数传递给 vehicleService 方法之一,并向我抛出 PossiblyInvalidArgument 错误,因为Argument 1 ... expects string, possibly different type array<array-key, string>|null|string provided。
我如何确保 PHP MD 这是一个字符串?
【问题讨论】:
-
您是否尝试过将
$identifier显式转换为字符串,将其作为(string)$identifier传递,或者将其分配为$identifier = (string)$input->getArgument('identifier');? -
PHP MD 会说不可能将可能的数组变量转换为字符串:(
标签: php symfony-console psalm-php