2012-03-17 3 views
4

Как создать PHP DocBlock с указанием @return, в котором говорится о возврате класса. Это на данный момент довольно просто, делаяPHP docBlock @return className

/** 
* 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 для этого Aswell, но я не уверен, если это на самом деле возможно.

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

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

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

+0

Что такое intelissense? Что он отображает и что вы хотите отображать? – jpic

+1

Intelissense - это возможность IDE показать автозаполнение и дополнительную информацию о некоторых функциях, классах и т. Д.! [Скриншот] (http://oi42.tinypic.com/6gj413.jpg) –

+1

Вы должны указать, какая именно IDE это, и тэг соответственно, в надежде на ответ. Но не представляется возможным знать, что адрес будет возвращен без фактической оценки «Адрес» ... Итак, если для этого есть функция, это IDE специфическая, а не связанная с phpdoc. – jpic

ответ

3

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

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

в конце концов некоторые детали, такие как:

* @return object Object of class $className 

См. docs for @return.

+0

Или, более конкретно, Подкласс определенного Суперкласса, то есть: '@return Person', и он фактически вернет' Employee' или 'Musician' или' Sportsman', классы, которые расширяют (наследуют) 'Person'. –

+0

Очень хороший момент от Martin – jpic

+0

Спасибо. Однако теперь я пытаюсь получить intelissense для $ className, когда я использую результат этого метода. (Я изменил свой вопрос, чтобы уточнить) –

1

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

@return User|Address|Sandwich|Coiture 

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

Смежные вопросы