PHP docBlock @return className

Как создать PHP DocBlock с указанием @return, в котором указано возвращение класса. На данный момент это довольно просто, выполнив

/**
* This returns an object of the "User" class
* @return User
*/
public function getUser() { return $this->user; }

Я использую это, чтобы получить intellisense через мою IDE для этих возвращаемых значений. (в моем случае Netbeans)

Однако у меня есть класс, который возвращает класс на основе имени переменной. (Например:)

/**
* This returns an object of the $param
* @param String $className
* @return ???
*/
public function getSomeObject($className) { return new $className(); }

и я пытаюсь создать intellisense для этого, но я не уверен, что это действительно возможно.

Например, когда я звоню

$someClass = new MyClass();
$var = $someClass->getSomeObject('Address');

Я хотел бы, чтобы моя IDE показала мне intellisense для переменной $ var (которая будет содержать объект адреса)


person Mathias Bosman    schedule 17.03.2012    source источник
comment
Что такое интелиссенс? Что он отображает и что вы хотите, чтобы он отображал?   -  person jpic    schedule 17.03.2012
comment
Intelissense — это возможность IDE отображать автодополнение и дополнительную информацию об определенных функциях, классах и т. д. !Снимок экрана< /а>   -  person Mathias Bosman    schedule 17.03.2012
comment
Вы должны указать, что это за IDE, и пометить соответствующим образом в надежде на ответ. Но не представляется возможным узнать, что адрес будет возвращен без фактической оценки «адреса» ... Так что, если для этого есть функция, она специфична для IDE, а не связана с phpdoc.   -  person jpic    schedule 17.03.2012


Ответы (2)


Имеет смысл упомянуть, что метод возвращает объект как таковой:

/**
* [...]
* @return object
*/

В конце концов, с некоторыми подробностями как таковыми:

* @return object Object of class $className

См. документацию по @return.

person jpic    schedule 17.03.2012
comment
Или, точнее, подкласс определенного суперкласса, то есть: @return Person, и он фактически вернет Employee или Musician или Sportsman, классы, которые расширяют (наследуют) Person. - person lmcanavals; 17.03.2012
comment
Спасибо. Однако теперь я пытаюсь получить intelissense для $ className, как только я использую результат этого метода. (Я исправил свой вопрос, чтобы уточнить) - person Mathias Bosman; 17.03.2012

Если вы не можете перечислить все возможные типы возврата,

@return User|Address|Sandwich|Coiture

, и интегрированная среда разработки должна позволять автодополнению агрегировать все методы/свойства из полного списка классов, то я не вижу в этом возможности.

person ashnazg    schedule 21.03.2012