类ArrayObject的phpdoc变量

时间:2016-09-07 16:16:31

标签: php phpdoc

我有一个扩展ArrayObject

的课程

class Collection extends ArrayObject

我知道我可以使用以下代码定义对象数组:

/* @var $userArray Model_User[] */

但是如何将变量$userArray定义为包含类Collection对象的类Model_User的自定义数组?

不改变class Collection或其phpdoc。 我想对不同的对象数组使用相同的class Collection

这与PHPDoc type hinting for array of objects?不同,因为该主题的讨论与php中的常见数组有关,这些数组被phpdoced为 /* @var $userArray Model_User[] */同时我的问题与自定义构建数组有关,如果是phpdoced,我上面的方法不会输入自定义构建数组类的提示方法,就像$userArray->echoChanges()那样,因为它会认为它是一个常见的数组,而不是一个类Collection的数组。是的$userArray也充当数组,所以它应该输入提示数组内容$userArray[3]->name

1 个答案:

答案 0 :(得分:0)

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通用样式集合表示法的另一个问题。