对象数组的 PHPDoc 类型提示?

2022-08-30 05:53:24

因此,在 PHPDoc 中,可以在成员变量声明上方指定以提示其类型。然后,对于例如PHPEd,IDE将知道它正在使用哪种类型的对象,并能够为该变量提供代码见解。@var

<?php
  class Test
  {
    /** @var SomeObj */
    private $someObjInstance;
  }
?>

这很有效,直到我需要对对象数组执行相同的操作,以便在以后循环访问这些对象时能够获得适当的提示。

那么,有没有办法声明一个PHPDoc标签来指定成员变量是s的数组? 例如,array 是不够的,并且似乎无效。SomeObj@var@var array(SomeObj)


答案 1

在 JetBrains 的 PhpStorm IDE 中,您可以使用 ,例如:/** @var SomeObj[] */

/**
 * @return SomeObj[]
 */
function getSomeObjects() {...}

phpdoc 文档建议使用此方法:

指定为包含单个类型,Type 定义将通知读者每个数组元素的类型。然后,只有一个 Type 应作为给定数组的元素。

例:@return int[]


答案 2

用:

/* @var $objs Test[] */
foreach ($objs as $obj) {
    // Typehinting will occur after typing $obj->
}

在内联变量中键入时,以及

class A {
    /** @var Test[] */
    private $items;
}

对于类属性。

09年PHPDoc(以及Zend Studio和Netbeans等IDE)没有这个选项时的先前答案:

你能做的最好的事情就是说,

foreach ($Objs as $Obj)
{
    /* @var $Obj Test */
    // You should be able to get hinting after the preceding line if you type $Obj->
}

我在Zend Studio中经常这样做。不知道其他编辑器,但它应该工作。


推荐