stdClass属性的类型提示?

Ske*_*ets 3 php type-hinting phpstorm

是否有标准方法来键入提示存在于stdClass?的属性?

例如,我使用一些API并获得JSON响应.然后我用它解析它json_decode,但我希望IDE知道这个stdClass对象有什么属性.

我尝试这样做:

$obj = json_decode($jsonResponse);
/** @var $obj \stdClass */
/** @property String $obj->prop */
Run Code Online (Sandbox Code Playgroud)

但PhpStorm仍然不承认$obj有财产prop.

反正有没有让这个工作?

Max*_*rov 5

您可以创建一个将继承stdClass并将描述属性的类.响应对象可能会转换为它.例如:

/**
 * @property string $prop
 */
class SomeClass extends stdClass
{
}

$obj = json_decode($jsonResponse);
$obj = (SomeClass)$obj;
Run Code Online (Sandbox Code Playgroud)

  • 最后一行实际上是一个解析错误,你不能转换为非基本类型.只需使用`/**@var SomeClass $ obj*/`. (2认同)