stdClass属性的类型提示?

3

有没有一种标准的方式来对存在于stdClass对象上的属性进行类型提示呢?

例如,我使用某些API并获取JSON响应。然后我使用json_decode解析它,但我希望IDE知道这个stdClass对象具有哪些属性。

我尝试了以下方法:

$obj = json_decode($jsonResponse);
/** @var $obj \stdClass */
/** @property String $obj->prop */

但是 PhpStorm 仍然无法识别 $obj 具有属性 prop。有没有办法让它正常工作?

1
/** @property String $obj->prop */ -- 它不是这样工作的。你有两个选择:1)只使用任何你想要的字段,IDE 不应该警告你未知的字段,因为它是一个 stdClass 实例。2)仅为 IDE 创建一些虚假类,并在类型提示中使用它,而不是 \stdClass - LazyOne
1个回答

5
您可以创建一个继承自 stdClass 的类来描述属性,将响应对象转换为它。例如:
/**
 * @property string $prop
 */
class SomeClass extends stdClass
{
}

$obj = json_decode($jsonResponse);
$obj = (SomeClass)$obj;

2
这最后一行实际上是一个解析错误,你不能将其转换为非原始类型。只需使用 /** @var SomeClass $obj */ 即可。 - Jeto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接