Автозавершение кода в netbeans
Автозавершение кода в netbeans
Насколько я понимаю, проблема не имеет решения, но тем не менее, на всякий случай спрошу.
1. В NetBeans автозавершение кода так и должно работать?
Yii::app()->getBasePath - автозавершает (метод определён в CApplication)
Yii::app()->getAssetManager - нет в подсказках (метод определён в CWebApplication)
Как-то решается эта проблема?
2. Просто интересно, не могу понять - откуда NetBeans узнаёт что подсказывать, когда я ввожу Yii::app()-> ?
ведь метод app() всего лишь делает return $this->_app; т.е. откуда нетбинс предполагает что этот _app - экземпляр CApplication?
(в случае веб-приложения, на самом деле - _app - экземпляр CWebApplication, отсюда наверное и проблемы с автозавершением ввода).
1. В NetBeans автозавершение кода так и должно работать?
Yii::app()->getBasePath - автозавершает (метод определён в CApplication)
Yii::app()->getAssetManager - нет в подсказках (метод определён в CWebApplication)
Как-то решается эта проблема?
2. Просто интересно, не могу понять - откуда NetBeans узнаёт что подсказывать, когда я ввожу Yii::app()-> ?
ведь метод app() всего лишь делает return $this->_app; т.е. откуда нетбинс предполагает что этот _app - экземпляр CApplication?
(в случае веб-приложения, на самом деле - _app - экземпляр CWebApplication, отсюда наверное и проблемы с автозавершением ввода).
Re: Автозавершение кода в netbeans
Код: Выделить всё
/**
* @return CApplication the application singleton, null if the singleton has not been created yet.
*/
public static function app()
{
return self::$_app;
}
это PHPDocumentor
Мануал читать здесь: http://manual.phpdoc.org/HTMLSmartyConv ... r.pkg.html
1) Так как Yii::app() по мнению IDE возвращает класс CApplication, то IDE ищет getBasePath в объявлении класса CApplication и соответственно находит его там. А вот getAssetManager это метод класса CWebApplication, о котором IDE ничего не знает (вернее IDE уверен, что возвращаемый класс - CApplication), поэтому считает, что у Yii::app() нет метода getAssetManager. В реальности же Yii::app() возвращает объект текущего приложения и в Вашем случае это объект класса CWebApplication (мы создаём этот объект в файле index.php вызывая Yii::createWebApplication($config))
Таким образом появляется расхождение PHPDoc/IDE и реального положения вещей.
Конференция: yii@conference.jabber.ru
Re: Автозавершение кода в netbeans
Спасибо.johnatanb писал(а):2) Из @return CApplicationКод: Выделить всё
/** * @return CApplication the application singleton, null if the singleton has not been created yet. */ public static function app() { return self::$_app; }
это PHPDocumentor
Т.е. в принципе можно попытаться в некоторых случаях просто подправлять PHPDoc (когда 100% знаю что в случае с web - приложением возвращается не базовый класс)
Или в PHP всё-таки можно делать как-то "приведение типов" для классов, да ещё и так чтоб NetBeans его понимал?
Так как это делается в C++ - $a=(CWebApplication)Yii::app(); (в PHP такой способ вроде бы не работает)
Re: Автозавершение кода в netbeans
В PHP работает $a=(int)'2ab4';
А править базовые файлы не советую, даже если только PHPDoc. Здесь вопрос поддержки фреймворка приложением IDE. Как только решат поддерживать этот фреймворк, то уже не нужны будут такие патчи.
А править базовые файлы не советую, даже если только PHPDoc. Здесь вопрос поддержки фреймворка приложением IDE. Как только решат поддерживать этот фреймворк, то уже не нужны будут такие патчи.
Конференция: yii@conference.jabber.ru
-
- Сообщения: 22
- Зарегистрирован: 2010.11.04, 21:49
- Откуда: Украина, Мариуполь
Re: Автозавершение кода в netbeans
Апну тему.
Добавляю каталог с фреймворком в Include Path конкретного проекта. Автокомплит работает, но почему-то каждый метод из базового класса показывается по 2 раза. Причем оба раза место декларации например метода validate() - file:/D:/xampp/htdocs/framework/base/CModel.php
Если у метода есть параметры по умолчанию, нетбинс показывает метод с каждым из них. Соответственно, так как у метода validate есть 2 параметра по умолчанию - мне показывается 6 методов (при нормальном поведении должно быть 3)
Include Path определен только 1 раз, если убрать из настроек проекта - автокомплит пропадает. yiilite исключен из индексации.
Никто не сталкивался?
Добавляю каталог с фреймворком в Include Path конкретного проекта. Автокомплит работает, но почему-то каждый метод из базового класса показывается по 2 раза. Причем оба раза место декларации например метода validate() - file:/D:/xampp/htdocs/framework/base/CModel.php
Если у метода есть параметры по умолчанию, нетбинс показывает метод с каждым из них. Соответственно, так как у метода validate есть 2 параметра по умолчанию - мне показывается 6 методов (при нормальном поведении должно быть 3)
Include Path определен только 1 раз, если убрать из настроек проекта - автокомплит пропадает. yiilite исключен из индексации.
Никто не сталкивался?
Re: Автозавершение кода в netbeans
yiilite исключите - уже где-то было
-
- Сообщения: 22
- Зарегистрирован: 2010.11.04, 21:49
- Откуда: Украина, Мариуполь
Re: Автозавершение кода в netbeans
чувак, ты пост читал? я же написал, что исключен.Nafania писал(а):yiilite исключите - уже где-то было
Re: Автозавершение кода в netbeans
Думаю, этот способ поможет - http://rmcreative.ru/blog/post/yii--avt ... lja-yiiapperesik писал(а):
[Редкие] Записки пещерного человека
-
- Сообщения: 22
- Зарегистрирован: 2010.11.04, 21:49
- Откуда: Украина, Мариуполь
Re: Автозавершение кода в netbeans
Да, то что надо. Спасибо!Caveman писал(а):Думаю, этот способ поможет - http://rmcreative.ru/blog/post/yii--avt ... lja-yiiapperesik писал(а):