PHPDoc type hinting for array of objects? PHPDoc type hinting for array of objects? php php

PHPDoc type hinting for array of objects?


In the PhpStorm IDE from JetBrains, you can use /** @var SomeObj[] */, e.g.:

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

The phpdoc documentation recommends this method:

specified containing a single type, the Type definition informs the reader of the type of each array element. Only one Type is then expected as element for a given array.

Example: @return int[]


Use:

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

when typehinting inline variables, and

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

for class properties.

Previous answer from '09 when PHPDoc (and IDEs like Zend Studio and Netbeans) didn't have that option:

The best you can do is say,

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

I do that a lot in Zend Studio. Don't know about other editors, but it ought to work.


Netbeans hints:

You get code completion on $users[0]-> and for $this-> for an array of User classes.

/** * @var User[] */var $users = array();

You also can see the type of the array in a list of class members when you do completion of $this->...