如何在 php 中输入函数的参数
How do typehint a parameter of a function in php
我在获取此函数的 return 类型时遇到问题,因为我在开关中使用了混合类型。我用过mixed,炸了。我使用了 string|bool 和几种联合类型。
* @param $value
* @param string $type
public function __construct(string $type, $value)
{
$this->type = $type;
$this->value = $value;
}
我已经尝试了所有方法,但没有通过 CI/CD 管道 (AWS)
public function getValue(bool $typed = false)
{
if (false === $typed) {
return $this->value;
}
switch ($this->type) {
case 'boolean':
return (bool) $this->value;
case 'datetime':
if (empty($this->value)) {
return null;
}
return new \DateTime($this->value);
case 'option_tags':
return json_decode($this->value);
default:
return $this->value;
}
}
错误
以下是错误
Method App\Model\Resources::getValue() has no return typehint specified.
Parameter #1 $time of class DateTime constructor expects string, string|true given.
Parameter #1 $json of function json_decode expects string, bool|string given.
这个错误是因为你没有从 getValue()
声明你想要 return 的类型
这就是您声明 return 类型的方式
public function getValue(bool $typed = false): date
您需要为函数声明 return 类型。
简单的声明一个return类型,需要在params后面加上一个:
,像这样
public function store(Request $request): JsonResponse
在现代 PHP 中,您可以提供所有可能类型的列表:
// Tweak type list your exact needs
public function getValue(bool $typed = false): bool|DateTime|null
... 或使用 mixed
如果该方法确实可以 return 任何东西:
public function getValue(bool $typed = false): mixed
在旧版本中,您只能在文档块中使用 @return
tag:
/**
* @param bool $typed
* @return mixed
* @throws Exception
*/
我明白 PHPStan 会很乐意接受所有选择。
我在获取此函数的 return 类型时遇到问题,因为我在开关中使用了混合类型。我用过mixed,炸了。我使用了 string|bool 和几种联合类型。
* @param $value
* @param string $type
public function __construct(string $type, $value)
{
$this->type = $type;
$this->value = $value;
}
我已经尝试了所有方法,但没有通过 CI/CD 管道 (AWS)
public function getValue(bool $typed = false)
{
if (false === $typed) {
return $this->value;
}
switch ($this->type) {
case 'boolean':
return (bool) $this->value;
case 'datetime':
if (empty($this->value)) {
return null;
}
return new \DateTime($this->value);
case 'option_tags':
return json_decode($this->value);
default:
return $this->value;
}
}
错误 以下是错误
Method App\Model\Resources::getValue() has no return typehint specified.
Parameter #1 $time of class DateTime constructor expects string, string|true given.
Parameter #1 $json of function json_decode expects string, bool|string given.
这个错误是因为你没有从 getValue()
这就是您声明 return 类型的方式
public function getValue(bool $typed = false): date
您需要为函数声明 return 类型。
简单的声明一个return类型,需要在params后面加上一个:
,像这样
public function store(Request $request): JsonResponse
在现代 PHP 中,您可以提供所有可能类型的列表:
// Tweak type list your exact needs
public function getValue(bool $typed = false): bool|DateTime|null
... 或使用 mixed
如果该方法确实可以 return 任何东西:
public function getValue(bool $typed = false): mixed
在旧版本中,您只能在文档块中使用 @return
tag:
/**
* @param bool $typed
* @return mixed
* @throws Exception
*/
我明白 PHPStan 会很乐意接受所有选择。