autocomplete: PhpDoc @property class CWebApplication

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
Smak
Сообщения: 9
Зарегистрирован: 2011.04.15, 12:27
Откуда: Новосибирск

autocomplete: PhpDoc @property class CWebApplication

Сообщение Smak »

У класса CWebApplication не хватает свойств @property.

Если посмотреть на описание класса CApplication. То можно увидеть список @property.

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

/**
 * .... 
 * @author Qiang Xue <[email protected]>
 * @version $Id: CApplication.php 3001 2011-02-24 16:42:44Z alexander.makarow $
 * @package system.base
 * @since 1.0
 *
 * @property string $basePath Returns the root path of the application.
 * @property CCache $cache Returns the cache component.
 * @property CPhpMessageSource $coreMessages Returns the core message translations.
 * @property CDateFormatter $dateFormatter Returns the locale-dependent date formatter.
 * @property CDbConnection $db Returns the database connection component.
 * @property CErrorHandler $errorHandler Returns the error handler component.
 * @property string $extensionPath Returns the root directory that holds all third-party extensions.
 * @property string $id Returns the unique identifier for the application.
 * @property string $language Returns the language that the user is using and the application should be targeted to.
 * @property CLocale $locale Returns the locale instance.
 * @property string $localeDataPath Returns the directory that contains the locale data.
 * @property CMessageSource $messages Returns the application message translations component.
 * @property CNumberFormatter $numberFormatter The locale-dependent number formatter.
 * @property CHttpRequest $request Returns the request component.
 * @property string $runtimePath Returns the directory that stores runtime files.
 * @property CSecurityManager $securityManager Returns the security manager component.
 * @property CStatePersister $statePersister Returns the state persister component.
 * @property string $timeZone Returns the time zone used by this application.
 * @property CUrlManager $urlManager Returns the URL manager component.
 */
abstract class CApplication extends CModule
{
 
Благодаря указанным @property в IDE (в частности NetBeans, корректно работает autocomplete).
например Yii::app()->request-> (подскажет все методы класса CHttpRequest)

У класса CWebApplication, такого подробно описания нет. В следствии чего, не работает это:
например Yii::app()->clientScript-> (ничего нам не скажет)

Не страшно, но исправить легко, и работать станет приятнее.

Создал тикет http://code.google.com/p/yii/issues/detail?id=2357
Последний раз редактировалось Smak 2011.04.21, 06:21, всего редактировалось 1 раз.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение samdark »

I am sorry, description, @property yii 1.1.8 version in place.
?
Аватара пользователя
Smak
Сообщения: 9
Зарегистрирован: 2011.04.15, 12:27
Откуда: Новосибирск

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение Smak »

плохо у меня с английским)
"Извините, описание, @property в версии yii 1.1.8 на месте"
в тиките писал, что в версии 1.1.8 в классе CApplication свойства @property нету. оказалось есть.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение samdark »

Ок. Закрыл тикет.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение samdark »

Ошибочка вышла. Переоткрыл.
Аватара пользователя
Smak
Сообщения: 9
Зарегистрирован: 2011.04.15, 12:27
Откуда: Новосибирск

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение Smak »

Возникла проблема, для того что бы работал автокомплит для CWebApplication и CConsoleApplication, надо изменить комментарии в методе Yii::app();
(добавить @return CApplication|CWebApplication|CConsoleApplication)

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

       /**
     * Returns the application singleton, null if the singleton has not been created yet.
     * @return CApplication|CWebApplication|CConsoleApplication the application singleton, null if the singleton has not been created yet.
     */
    public static function app()
    {
        return self::$_app;
    }
 
Было:

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

@return CApplication the application singleton, null if the singleton has not been created yet.
 
Надо:

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

@return CApplication|CWebApplication|CConsoleApplication the application singleton, null if the singleton has not been created yet.
 
mrix
Сообщения: 125
Зарегистрирован: 2010.08.30, 11:48
Откуда: Россия, Новосибирск

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение mrix »

В чём проблема? Поменяй, как хочешь. Это же комментарий. Я также делаю.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение samdark »

Smak, IDE какая?
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение SpiLLeR »

Лазить в код фреймворка, плохая практика, после обновления надо вносить все свои изменения вновь, это как минимум.
Предупрежден - значит вооружен.
devKP.ru
Аватара пользователя
Smak
Сообщения: 9
Зарегистрирован: 2011.04.15, 12:27
Откуда: Новосибирск

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение Smak »

Sam Dark, NetBeans 7.0
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: autocomplete: PhpDoc @property class CWebApplication

Сообщение samdark »

Такой PHPDoc будет работать исключительно в NetBeans. Остальным IDE он всё только испортит.

Универсальное решение:
1. Исключаем из индекса yii.php.
2. В index.php определяем свой Yii extends YiiBase и внутрь запихиваем:

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

/**
  * @static
  * @return CWebApplication
  */
public static function app()
{
    return parent::app();
}
 
Ответить