2014-09-03 23 views
5

celu udokumentowania zmienną, która może podjąć tablicę, która odbiera wektor, którego wartości są ciągi:Jak udokumentować tablicę z subarrayami (typu mieszanego)?

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

udokumentować zmienną, która może podjąć tablicę, która odbiera wektor, którego wartości są liczbami całkowitymi:

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

Jak powinienem udokumentować zmienną, której wartościami są tablice mieszane?

muszę udokumentować tablicę takiego:

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

sobie wyobrazić, że jest coś takiego:

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

Tablica @var [] Tablica obiektów mieszanych. –

+1

'@var mixed [] Tablica obiektów mieszanych'. –

+1

"mixed oznacza, że ​​parametr może akceptować wiele (ale niekoniecznie wszystkie) typy." (http://php.net/manual/de/language.pseudo-types.php) - poprawnie mówiąc nie ma tu zastosowania, ponieważ wartości wewnętrzne są tablicami i nie są mieszane. – YMMD

Odpowiedz

4

Według current draft z PHPDoc (fig PSR-5 wnioskodawcy), przy czym @ var tag to deprecated. Sugerują zamiast tego użycie @type tag.

Typ zmiennej nadal jest tablicą; zawartość tej tablicy zostanie krótko wspomniana w opisie.

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

lub

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

Jeśli zmienna może zawierać rzeczy inne niż ciągi, mogę powiedzieć An array of mixed elements., lub gdybym wiedział, co konkretnie mogą być An array of bool|string|object elements.

Jeśli sama zmienna może być różnych typów, dałbym listę typów, jakie może być.

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

Dzięki, może '@type \ ArrayObject <\ ArrayObject >'? –

+0

Nie. Zmienne PHP mają typ [typ] (http://php.net/manual/en/language.types.php "PHP.net"). Tablica jest tablicą typu ** **. Tablica ma elementy. Instancja klasy jest obiektem ** typ ** i może mieć właściwości. Tak więc '@type array $ nameOfVariable Opis zmiennej' Opisując zawartość zmiennej, bądź zwięzły. Użyj symbolu potoku ("|"), aby oddzielić ** typy **, ponieważ zawartość może być "ten LUB" ** typ **. W dokumentacji bardzo ważne jest, aby uniknąć nieporozumień, więc nie używaj słowa "obiekt", jeśli masz na myśli "element". – Amgine

+0

Oraz pod-array? –