因此,在PHPDoc中,可以在成员变量声明上方指定@var,以提示其类型。然后一个IDE,例如PHPEd,将知道它正在处理的对象类型,并能够为该变量提供代码洞察力。
<?php
class Test
{
/** @var SomeObj */
private $someObjInstance;
}
?>
这很好,直到我需要对对象数组做同样的事情,以便在以后迭代这些对象时能够得到适当的提示。
那么,是否有一种方法来声明PHPDoc标签,以指定成员变量是SomeObjs的数组?@var数组是不够的,@var数组(SomeObj)似乎是无效的,例如。
PSR-5: PHPDoc提出了一种泛型风格的表示法。
语法
Type[]
Type<Type>
Type<Type[, Type]...>
Type<Type[|Type]...>
集合中的值甚至可以是另一个数组,甚至是另一个集合。
Type<Type<Type>>
Type<Type<Type[, Type]...>>
Type<Type<Type[|Type]...>>
例子
<?php
$x = [new Name()];
/* @var $x Name[] */
$y = new Collection([new Name()]);
/* @var $y Collection<Name> */
$a = new Collection();
$a[] = new Model_User();
$a->resetChanges();
$a[0]->name = "George";
$a->echoChanges();
/* @var $a Collection<Model_User> */
注意:如果你期望IDE来做代码辅助,那么IDE是否支持PHPDoc泛型风格的集合符号就是另一个问题了。
从我对这个问题的回答来看。