Автозавершение кода в netbeans

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Автозавершение кода в netbeans

Сообщение eresik »

Насколько я понимаю, проблема не имеет решения, но тем не менее, на всякий случай спрошу.

1. В NetBeans автозавершение кода так и должно работать?
Yii::app()->getBasePath - автозавершает (метод определён в CApplication)
Yii::app()->getAssetManager - нет в подсказках (метод определён в CWebApplication)

Как-то решается эта проблема?

2. Просто интересно, не могу понять - откуда NetBeans узнаёт что подсказывать, когда я ввожу Yii::app()-> ?
ведь метод app() всего лишь делает return $this->_app; т.е. откуда нетбинс предполагает что этот _app - экземпляр CApplication?

(в случае веб-приложения, на самом деле - _app - экземпляр CWebApplication, отсюда наверное и проблемы с автозавершением ввода).
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: Автозавершение кода в netbeans

Сообщение Johnatan »

Код: Выделить всё

/**
     * @return CApplication the application singleton, null if the singleton has not been created yet.
     */
    public static function app()
    {
        return self::$_app;
    } 
2) Из @return CApplication
это 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
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Re: Автозавершение кода в netbeans

Сообщение eresik »

johnatanb писал(а):

Код: Выделить всё

/**
     * @return CApplication the application singleton, null if the singleton has not been created yet.
     */
    public static function app()
    {
        return self::$_app;
    } 
2) Из @return CApplication
это PHPDocumentor
Спасибо.
Т.е. в принципе можно попытаться в некоторых случаях просто подправлять PHPDoc (когда 100% знаю что в случае с web - приложением возвращается не базовый класс)

Или в PHP всё-таки можно делать как-то "приведение типов" для классов, да ещё и так чтоб NetBeans его понимал?
Так как это делается в C++ - $a=(CWebApplication)Yii::app(); (в PHP такой способ вроде бы не работает)
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: Автозавершение кода в netbeans

Сообщение Johnatan »

В PHP работает $a=(int)'2ab4';

А править базовые файлы не советую, даже если только PHPDoc. Здесь вопрос поддержки фреймворка приложением IDE. Как только решат поддерживать этот фреймворк, то уже не нужны будут такие патчи.
Конференция: yii@conference.jabber.ru
tommyangelo
Сообщения: 22
Зарегистрирован: 2010.11.04, 21:49
Откуда: Украина, Мариуполь

Re: Автозавершение кода в netbeans

Сообщение tommyangelo »

Апну тему.

Добавляю каталог с фреймворком в Include Path конкретного проекта. Автокомплит работает, но почему-то каждый метод из базового класса показывается по 2 раза. Причем оба раза место декларации например метода validate() - file:/D:/xampp/htdocs/framework/base/CModel.php

Если у метода есть параметры по умолчанию, нетбинс показывает метод с каждым из них. Соответственно, так как у метода validate есть 2 параметра по умолчанию - мне показывается 6 методов (при нормальном поведении должно быть 3)

Include Path определен только 1 раз, если убрать из настроек проекта - автокомплит пропадает. yiilite исключен из индексации.

Никто не сталкивался?
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Автозавершение кода в netbeans

Сообщение Nafania »

yiilite исключите - уже где-то было
tommyangelo
Сообщения: 22
Зарегистрирован: 2010.11.04, 21:49
Откуда: Украина, Мариуполь

Re: Автозавершение кода в netbeans

Сообщение tommyangelo »

Nafania писал(а):yiilite исключите - уже где-то было
чувак, ты пост читал? :) я же написал, что исключен.
Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Автозавершение кода в netbeans

Сообщение Caveman »

eresik писал(а):
Думаю, этот способ поможет - http://rmcreative.ru/blog/post/yii--avt ... lja-yiiapp
tommyangelo
Сообщения: 22
Зарегистрирован: 2010.11.04, 21:49
Откуда: Украина, Мариуполь

Re: Автозавершение кода в netbeans

Сообщение tommyangelo »

Caveman писал(а):
eresik писал(а):
Думаю, этот способ поможет - http://rmcreative.ru/blog/post/yii--avt ... lja-yiiapp
Да, то что надо. Спасибо!
Ответить