Привет на сто лет! Суть вопроса: Код (PHP): <?php abstract class Singleton { static private $instance = null; /** * @return Singleton; */ public static function getInstance() { // Здесь очень сложная механика по передаче самого себя с подстановкой самотипа } } class Test extends Singleton { public $varWithExtraName; } $t = Test::getInstance(); $t-> .... //барабанная дробь! IDE должна сейчас подкинуть вам спеллы! Но!.. ?> Но спеллы логичным образом подкидываются из родительского класса. Вилы. Дальше приходится работать в слепую. Вопроса два: 1. Как можно не очень криво закостылить? Так, чтобы не пришлось копировать целый метод. 2. Как сделать динамическую подстановку имени класса? Ладно-ладно. Не нужно супер динамики. Я готов в описании класса написать что-то вроде @id Test, а в описании метода @return {@id}, но ведь, зараза, и таким образом не работает! ЗЫ: Кто может объяснить, куда скипанула нормальная подсветка синтаксиса? Давно не заходил. Столько всего поменялось - любо дорого поскорбеть.
За подсветку спасибо!) Нашел хот-фикс. В динамике не работает, но с большего полезен. Суть в следующем: Оставляем все то же самое, но дальше пишем вот такую штуку: Код (PHP): <?php $t = Test::getInstance(); /* @var $t Test */ $t->... //Здесь долгожданные спеллы нужного нам класса ?> Почитал умные форумы. Пишут, что из-за мета уровня DocBlock'ов динамическая подстановка не работает. Если честно, то я не уверен, что же именно в этом динамического. Класс в котором объявлен метод (или в который он унаследован) известен еще до начала исполнения кода, т.е. при первом проходе. У класса нельзя изменить родителя во время исполнения. Какая же это динамика?.. Если появится механика лучше хотфикса - буду премного благодарен! Пока довольствуюсь костылем. Добавлено спустя 11 минут 53 секунды: Вроде в NetBeans'е пофиксили аж в январе месяце. Посмотрю сейчас ночные сборки, может быть поможет. https://netbeans.org/bugzilla/show_bug.cgi?id=196565 Всем спасибо.