从PHPStan 1.6开始,就可以使用条件返回类型了,在这里我可以做以下事情:
/**
* @param string $x
* @return ($x is literal-string ? literal-string : string)
*/
public function isNull($x)
{
}这采取了(<template param> is <union type> ? <union type> : <union type>)的形式。
虽然做更复杂的条件是不可能的,但是可以嵌套它们(即使它变得有点混乱):
/**
* @param string $val
* @param string $x
* @param string $y
* @return ($val is literal-string ? ($x is literal-string ? ($y is literal-string ? literal-string : string) : string) : string)
*/
public function between($val, $x, $y)
{
}但我不知道如何处理变函数参数,函数可以接受任意数量的值。
当所有值都是literal-string时,我想返回一个literal-string,否则返回一个string。
也许类似于以下几点(不起作用):
/**
* @param string ...$x
* @return ($x is array<literal-string> ? literal-string : string)
*/
function example(...$x) {
return implode(', ', $x);
}这是PHPStan中当前实现的一个限制,还是我遗漏了什么?
这与PHPStan原则扩展和拉动请求324有关。
https://stackoverflow.com/questions/72229763
复制相似问题