2014-09-03 37 views
5

为了记录,可以采取其接收其值串的矢量阵列的变量:如何使用子阵列(混合类型)文件数组?

/* 
* @var string[] An array of string objects. 
*/ 
$foo = array('A', 'B', 'C'); 

为了记录,可以采取其接收其值整数的向量阵列的变量:

/* 
* @var int[] An array of string objects. 
*/ 
$foo = array(1, 5, 0); 

我该如何记录一个变量的值是混合数组?

我需要记录这样一个阵列:

$foo = array(
    array('value A', 1, $this), 
    array('value b', 2, NULL), 
    array('value X', 15, new Test) 
); 

我想它是这样的:

/* 
* @var array[][string|int|object|null] Description. 
*/ 
+1

@var array []一组混合对象。 – 2014-09-03 22:54:05

+1

'@var mixed []一组混合对象'。 – 2014-09-03 23:04:22

+1

“混合表示一个参数可以接受多个(但不一定是全部)类型。” (http://php.net/manual/de/language.pseudo-types.php) - 正确地说,这不适用于这里,因为内部值都是数组而不是混合的。 – YMMD 2014-09-03 23:10:24

回答

4

根据PHPDoc的的current draft(图PSR-5申请人),则@var标签是deprecated。他们建议改用@type tag

变量的类型仍然是一个数组;该数组的内容将在说明中简要提及。

/** 
* @var array $foo An array of string elements. 
*/ 

/** 
* @type array $foo An array of string elements. 
*/ 

如果变量可能包含不是字符串其他的事情,我可以说An array of mixed elements.,或者如果我知道具体他们会是怎样An array of bool|string|object elements.

如果变量本身可能各种类型的,我会列出它可能的类型。

/** 
* @type bool|string|array $foo Mixed type, depending on result of baz(). 
*/ 
+0

Thanks,Maybe'@type \ ArrayObject <\ ArrayObject >'? – 2014-09-04 02:22:25

+0

编号PHP的变量有一个[type](http://php.net/manual/en/language.types.php“PHP.net”)。数组是数组**类型**。一个数组包含元素。一个类的实例是一个对象**类型**,它可能有属性。所以'@type array $ nameOfVariable变量的描述'当描述变量的内容时,要简短。使用管道符号('|')分隔**类型**,因为内容可能是“this OR that”** type **。在文档中,避免混淆是非常重要的,所以当你指'元素'时不要使用“对象”这个词。 – Amgine 2014-09-04 03:17:30

+0

和子数组? – 2014-09-04 03:53:00