0

有没有办法指定函数将返回特定类型的对象,其中类型是参数之一的字符串?

例如

/**
 * @return object<$class>
 */
public function create(string $class): object {
 ... some factory stuff
}

这样当我这样做时 vscode 或 phpstorm 就会知道

$myvar = X::create('MyClass');

$myvar 将是 MyClass 类型,我将拥有适当的智能感知/自动完成功能吗?

4

1 回答 1

3

这可以使用这样的模板来工作:

/**
 * @template T
 * @param class-string<T> $a
 * @return T
 */
function foo($a)
{
    return $a;
}

但我不知道 VSCode 是否已经支持它。例如,PhpStorm 不知道如何正确处理返回值

于 2022-02-16T12:17:33.677 回答