Php 在stdClass中创建的Annonate字段?

Php 在stdClass中创建的Annonate字段?,php,netbeans,ide,phpdoc,Php,Netbeans,Ide,Phpdoc,执行$foo=新foo时,是否可以对Phpdoc进行注释,以便IDE可以自动完成到$foo->bar()->test?对不起,目前无法用phpDocumentor或NetBeans理解的自定义注释格式来记录关联数组或stdClass对象 从设计角度来看,使用适当的类可能是有意义的: class Foo { public function bar(): \stdClass { $obj = new \stdClass; $obj->test =

执行
$foo=新foo时
,是否可以对Phpdoc进行注释,以便IDE可以自动完成到
$foo->bar()->test

对不起,目前无法用phpDocumentor或NetBeans理解的自定义注释格式来记录关联数组或
stdClass
对象

从设计角度来看,使用适当的类可能是有意义的:

class Foo
{
    public function bar(): \stdClass
    {
        $obj = new \stdClass;
        $obj->test = 'test';
        return $obj;
    }
}
如果根本不需要逻辑,则类可以为空:

class Bar
{
    /**
     * @var string
     */
    public $test;
}

class Foo
{
    public function bar(): Bar
    {
        $obj = new Bar;
        $obj->test = 'test';
        return $obj;
    }
}
否则,您总是可以使用一个存根文件欺骗IDE,该存根文件定义了一个伪类,但从未实际执行过,然后假装您的变量属于该类:

/**
 * @property string $test
 */
class Bar
{
}
…其中,
/*@var$bar*/
用于NetBeans 8和更早版本,而
/**@var$bar*/
用于NetBeans 10(和许多其他IDE)

$foo = new Foo;
/* @var $bar Bar *//** @var Bar $bar */
$bar = $foo->bar();
$bar->…