CApplication
| Пакет | system.base |
|---|---|
| Наследование | абстрактный класс CApplication » CModule » CComponent |
| Подклассы | CConsoleApplication, CWebApplication |
| С момента | 1.0 |
| Исходный код | framework/base/CApplication.php |
Приложение служит глобальным контекстом, в котором обрабатывается пользовательский запрос. Оно управляет набором прикладных компонентов, предоставляющих специфические функциональные возможности всему приложению.
Основные компоненты приложения, предоставляемые CApplication, следующие:
- errorHandler: обрабатывает PHP-ошибки и необработанные исключения. Этот компонент приложения динамически загружается при необходимости.
- securityManager: предоставляет службы, связанные с безопасностью, такие как хеширование, шифрование. Этот компонент приложения динамически загружается при необходимости.
- statePersister: предоставляет метод глобального сохранения состояния. Этот компонент приложения динамически загружается при необходимости.
- cache: предоставляет кеширование. Этот компонент приложения по умолчанию отключен.
- messages: предоставляет источник сообщений для перевода сообщений приложения. Этот компонент приложения динамически загружается при необходимости.
- coreMessages: предоставляет источник сообщений для перевода сообщений фреймворка Yii. Этот компонент приложения динамически загружается при необходимости.
- urlManager: предоставляет возможность построения и разбора URL-адресов. Этот компонент приложения динамически загружается при необходимости.
- request: представляет текущий HTTP-запрос, инкапсулируя переменную $_SERVER и управляя куками, отправляемыми пользователю и получаемыми от него. Этот компонент приложения динамически загружается при необходимости.
- format: предоставляет набор часто используемых методов форматирования данных. Этот компонент приложения динамически загружается при необходимости.
CApplication проходит следующие этапы жизненного цикла при обработке пользовательского запроса:
- загрузка конфигурации приложения;
- настройка обработки ошибок;
- загрузка статических компонентов приложения;
- onBeginRequest: предварительная обработка пользовательского запроса;
- processRequest: обработка пользовательского запроса;
- onEndRequest: пост-обработка пользовательского запроса;
Начиная с 3-го этапа жизненного цикла, если произойдёт PHP-ошибка или необработанное исключение, приложение перейдёт к своей логике обработки ошибок и затем перейдёт к 6-му этапу.
Свойства Public
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| basePath | string | Возвращает корневой путь приложения. | CApplication |
| baseUrl | string | Возвращает относительный URL для приложения. | CApplication |
| behaviors | array | поведения, которые должны быть присоединены к модулю. | CModule |
| cache | CCache | Возвращает компонент кеша. | CApplication |
| charset | string | кодировка, используемая в настоящее время для приложения. | CApplication |
| components | array | Возвращает компоненты приложения. | CModule |
| controller | CController | текущий активный контроллер. | CApplication |
| coreMessages | CPhpMessageSource | Возвращает компонент перевода основных сообщений. | CApplication |
| dateFormatter | CDateFormatter | Возвращает форматировщик дат, зависящий от локали. | CApplication |
| db | CDbConnection | Возвращает компонент подключения к базе данных. | CApplication |
| errorHandler | CErrorHandler | Возвращает компонент обработки ошибок. | CApplication |
| extensionPath | string | Возвращает корневой каталог, содержащий все сторонние расширения. | CApplication |
| format | CFormatter | Возвращает компонент форматирования. | CApplication |
| homeUrl | string | URL домашней страницы | CApplication |
| id | string | Возвращает уникальный идентификатор приложения. | CApplication |
| language | string | Возвращает язык, используемый пользователем, и к которому должно быть нацелено приложение. | CApplication |
| locale | CLocale | Возвращает экземпляр локали. | CApplication |
| localeClass | string | класс, используемый для получения данных локали. | CApplication |
| localeDataPath | string | Возвращает каталог, содержащий данные локали. | CApplication |
| messages | CMessageSource | Возвращает компонент перевода сообщений приложения. | CApplication |
| modulePath | string | Возвращает каталог, содержащий модули приложения. | CModule |
| modules | array | Возвращает конфигурацию установленных модулей. | CModule |
| name | string | название приложения. | CApplication |
| numberFormatter | CNumberFormatter | форматировщик чисел, зависящий от локали. | CApplication |
| params | CAttributeCollection | Возвращает пользовательские параметры. | CModule |
| parentModule | CModule | Возвращает родительский модуль. | CModule |
| preload | array | идентификаторы компонентов приложения, которые должны быть предварительно загружены. | CModule |
| request | CHttpRequest | Возвращает компонент запроса. | CApplication |
| runtimePath | string | Возвращает каталог, хранящий временные файлы. | CApplication |
| securityManager | CSecurityManager | Возвращает компонент управления безопасностью. | CApplication |
| sourceLanguage | string | язык, на котором написано приложение. | CApplication |
| statePersister | CStatePersister | Возвращает компонент сохранения состояния. | CApplication |
| timeZone | string | Возвращает часовой пояс, используемый этим приложением. | CApplication |
| urlManager | CUrlManager | Возвращает компонент управления URL. | CApplication |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CApplication |
| __get() | Магический метод-геттер. | CModule |
| __isset() | Проверяет, является ли значение свойства null. | CModule |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| clearGlobalState() | Очищает глобальное значение. | CApplication |
| configure() | Настраивает модуль с указанной конфигурацией. | CModule |
| createAbsoluteUrl() | Создаёт абсолютный URL на основе предоставленной информации о контроллере и действии. | CApplication |
| createUrl() | Создаёт относительный URL на основе предоставленной информации о контроллере и действии. | CApplication |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикреплённые к этому компоненту поведения. | CComponent |
| displayError() | Отображает пойманную ошибку PHP. | CApplication |
| displayException() | Отображает необработанное исключение PHP. | CApplication |
| enableBehavior() | Включает прикреплённое поведение. | CComponent |
| enableBehaviors() | Включает все прикреплённые к этому компоненту поведения. | CComponent |
| end() | Завершает работу приложения. | CApplication |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| findLocalizedFile() | Возвращает локализованную версию указанного файла. | CApplication |
| getBasePath() | Возвращает корневой путь приложения. | CApplication |
| getBaseUrl() | Возвращает относительный URL для приложения. | CApplication |
| getCache() | Возвращает компонент кэша. | CApplication |
| getComponent() | Возвращает компонент приложения с указанным именем. | CModule |
| getComponents() | Возвращает компоненты приложения. | CModule |
| getController() | Возвращает текущий активный контроллер. В этом базовом классе возвращается null. | CApplication |
| getCoreMessages() | Возвращает компонент перевода основных сообщений. | CApplication |
| getDateFormatter() | Возвращает форматировщик даты, зависящий от локали. | CApplication |
| getDb() | Возвращает компонент подключения к базе данных. | CApplication |
| getErrorHandler() | Возвращает компонент обработчика ошибок. | CApplication |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getExtensionPath() | Возвращает корневой каталог, содержащий все сторонние расширения. | CApplication |
| getFormat() | Возвращает компонент форматировщика. | CApplication |
| getGlobalState() | Возвращает глобальное значение. | CApplication |
| getHomeUrl() | Возвращает URL домашней страницы. | CApplication |
| getId() | Возвращает уникальный идентификатор приложения. | CApplication |
| getLanguage() | Возвращает язык, используемый пользователем, и на который должно быть ориентировано приложение. | CApplication |
| getLocale() | Возвращает экземпляр локали. | CApplication |
| getLocaleDataPath() | Возвращает каталог, содержащий данные локали. | CApplication |
| getMessages() | Возвращает компонент перевода сообщений приложения. | CApplication |
| getModule() | Возвращает модуль приложения с указанным именем. | CModule |
| getModulePath() | Возвращает каталог, содержащий модули приложения. | CModule |
| getModules() | Возвращает конфигурацию установленных модулей. | CModule |
| getNumberFormatter() | Возвращает форматировщик чисел, зависящий от локали. Используется текущая локаль приложения. | CApplication |
| getParams() | Возвращает пользовательские параметры. | CModule |
| getParentModule() | Возвращает родительский модуль. | CModule |
| getRequest() | Возвращает компонент запроса. | CApplication |
| getRuntimePath() | Возвращает каталог, хранящий временные файлы. | CApplication |
| getSecurityManager() | Возвращает компонент менеджера безопасности. | CApplication |
| getStatePersister() | Возвращает компонент сохранения состояния. | CApplication |
| getTimeZone() | Возвращает часовой пояс, используемый этим приложением. | CApplication |
| getUrlManager() | Возвращает компонент менеджера URL. | CApplication |
| handleError() | Обрабатывает ошибки выполнения PHP, такие как предупреждения и сообщения. | CApplication |
| handleException() | Обрабатывает необработанные исключения PHP. | CApplication |
| hasComponent() | Проверяет, существует ли компонент с указанным именем. | CModule |
| hasEvent() | Определяет, определен ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для указанного события. | CComponent |
| hasModule() | Возвращает значение, указывающее, установлен ли указанный модуль. | CModule |
| hasProperty() | Определяет, определена ли свойство. | CComponent |
| loadGlobalState() | Загружает данные глобального состояния из постоянного хранилища. | CApplication |
| onBeginRequest() | Вызывается НЕПОСРЕДСТВЕННО ПЕРЕД обработкой запроса приложением. | CApplication |
| onEndRequest() | Вызывается НЕПОСРЕДСТВЕННО ПОСЛЕ обработки запроса приложением. | CApplication |
| onError() | Вызывается при возникновении ошибки выполнения PHP. | CApplication |
| onException() | Вызывается при возникновении необработанного исключения PHP. | CApplication |
| processRequest() | Обрабатывает запрос. | CApplication |
| raiseEvent() | Вызывает событие. | CComponent |
| run() | Запускает приложение. | CApplication |
| saveGlobalState() | Сохраняет данные глобального состояния в постоянное хранилище. | CApplication |
| setAliases() | Определяет корневые псевдонимы. | CModule |
| setBasePath() | Устанавливает корневой каталог приложения. | CApplication |
| setComponent() | Добавляет компонент под управление модуля. | CModule |
| setComponents() | Устанавливает компоненты приложения. | CModule |
| setExtensionPath() | Устанавливает корневой каталог, содержащий все сторонние расширения. | CApplication |
| setGlobalState() | Устанавливает глобальное значение. | CApplication |
| setHomeUrl() | Устанавливает URL домашней страницы | CApplication |
| setId() | Устанавливает уникальный идентификатор для приложения. | CApplication |
| setImport() | Устанавливает псевдонимы, используемые в модуле. | CModule |
| setLanguage() | Указывает язык, на который ориентировано приложение. | CApplication |
| setLocaleDataPath() | Устанавливает каталог, содержащий данные локали. | CApplication |
| setModulePath() | Устанавливает каталог, содержащий модули приложения. | CModule |
| setModules() | Настраивает подмодули этого модуля. | CModule |
| setParams() | Устанавливает пользовательские параметры. | CModule |
| setRuntimePath() | Устанавливает каталог для хранения файлов выполнения. | CApplication |
| setTimeZone() | Устанавливает часовой пояс, используемый этим приложением. | CApplication |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| init() | Инициализирует модуль. | CModule |
| initSystemHandlers() | Инициализирует обработчики ошибок. | CApplication |
| preinit() | Предварительная инициализация модуля. | CModule |
| preloadComponents() | Загружает статические компоненты приложения. | CModule |
| registerCoreComponents() | Регистрирует основные компоненты приложения. | CApplication |
События
| Событие | Описание | Определено в |
|---|---|---|
| onBeginRequest | Вызывается НЕПОСРЕДСТВЕННО ПЕРЕД обработкой запроса приложением. | CApplication |
| onEndRequest | Вызывается НЕПОСРЕДСТВЕННО ПОСЛЕ обработки запроса приложением. | CApplication |
| onException | Вызывается при возникновении необработанного исключения PHP. | CApplication |
| onError | Вызывается при возникновении ошибки выполнения PHP. | CApplication |
Подробное описание свойств
basePath свойство
public string getBasePath()
public void setBasePath(string $path)
Возвращает корневой путь приложения.
baseUrl свойство только для чтения
public string getBaseUrl(boolean $absolute=false)
Возвращает относительный URL для приложения. Это удобный метод для CHttpRequest::getBaseUrl().
См. также
cache свойство только для чтения
public CCache getCache()
Возвращает компонент кэша.
charset свойство
public string $charset;
Кодировка символов, используемая в приложении. По умолчанию 'UTF-8'.
controller свойство только для чтения (доступно начиная с v1.1.8)
public CController getController()
Текущий активный контроллер. В этом базовом классе возвращается null.
coreMessages свойство только для чтения
public CPhpMessageSource getCoreMessages()
Возвращает компонент перевода сообщений ядра.
dateFormatter свойство только для чтения
public CDateFormatter getDateFormatter()
Возвращает форматировщик дат, зависящий от локали.
db свойство только для чтения
public CDbConnection getDb()
Возвращает компонент подключения к базе данных.
errorHandler свойство только для чтения
public CErrorHandler getErrorHandler()
Возвращает компонент обработчика ошибок.
extensionPath свойство
public string getExtensionPath()
public void setExtensionPath(string $path)
Возвращает корневой каталог, содержащий все сторонние расширения.
format свойство только для чтения
public CFormatter getFormat()
Возвращает компонент форматирования.
homeUrl свойство
public string getHomeUrl()
public void setHomeUrl(string $value)
URL домашней страницы
id свойство
public string getId()
public void setId(string $id)
Возвращает уникальный идентификатор приложения.
language свойство
public string getLanguage()
public void setLanguage(string $language)
Возвращает язык, используемый пользователем, и на который должно быть ориентировано приложение.
locale свойство только для чтения
public CLocale getLocale(string $localeID=NULL)
Возвращает экземпляр локали.
localeClass свойство
public string $localeClass;
Класс, используемый для получения данных локали. По умолчанию 'CLocale'.
localeDataPath свойство (доступно начиная с v1.1.0)
public string getLocaleDataPath()
public void setLocaleDataPath(string $value)
Возвращает каталог, содержащий данные локали.
messages свойство только для чтения
public CMessageSource getMessages()
Возвращает компонент перевода сообщений приложения.
name свойство
public string $name;
Название приложения. По умолчанию 'Моё Приложение'.
numberFormatter свойство только для чтения
public CNumberFormatter getNumberFormatter()
Форматировщик чисел, зависящий от локали. Будет использована текущая локаль приложения.
request свойство только для чтения
public CHttpRequest getRequest()
Возвращает компонент запроса.
runtimePath свойство
public string getRuntimePath()
public void setRuntimePath(string $path)
Возвращает каталог, в котором хранятся файлы выполнения.
securityManager свойство только для чтения
public CSecurityManager getSecurityManager()
Возвращает компонент управления безопасностью.
sourceLanguage свойство
public string $sourceLanguage;
Язык, на котором написано приложение. В основном относится к языку сообщений и файлов представлений. По умолчанию 'en_us' (английский язык США).
statePersister свойство только для чтения
public CStatePersister getStatePersister()
Возвращает компонент сохранения состояния.
timeZone свойство
public string getTimeZone()
public void setTimeZone(string $value)
Возвращает часовой пояс, используемый этим приложением. Это простой обёртку PHP функции date_default_timezone_get().
urlManager свойство только для чтения
public CUrlManager getUrlManager()
Возвращает компонент менеджера URL.
Подробное описание методов
__construct() метод
public void __construct(mixed $config=NULL) | ||
| $config | mixed | конфигурация приложения. Если строка, она рассматривается как путь к файлу, содержащему конфигурацию; если массив, это фактическая информация о конфигурации. Убедитесь, что вы указали свойство basePath в конфигурации, которое должно указывать на каталог, содержащий всю логику приложения, шаблоны и данные. В противном случае каталог будет по умолчанию 'protected'. |
public function __construct($config=null)
{
Yii::setApplication($this);
// set basePath as early as possible to avoid trouble
if(is_string($config))
$config=require($config);
if(isset($config['basePath']))
{
$this->setBasePath($config['basePath']);
unset($config['basePath']);
}
else
$this->setBasePath('protected');
Yii::setPathOfAlias('application',$this->getBasePath());
Yii::setPathOfAlias('webroot',dirname($_SERVER['SCRIPT_FILENAME']));
if(isset($config['extensionPath']))
{
$this->setExtensionPath($config['extensionPath']);
unset($config['extensionPath']);
}
else
Yii::setPathOfAlias('ext',$this->getBasePath().DIRECTORY_SEPARATOR.'extensions');
if(isset($config['aliases']))
{
$this->setAliases($config['aliases']);
unset($config['aliases']);
}
$this->preinit();
$this->initSystemHandlers();
$this->registerCoreComponents();
$this->configure($config);
$this->attachBehaviors($this->behaviors);
$this->preloadComponents();
$this->init();
}
Конструктор.
clearGlobalState() метод
public void clearGlobalState(string $key) | ||
| $key | string | имя значения, которое нужно очистить |
public function clearGlobalState($key)
{
$this->setGlobalState($key,true,true);
}
Очищает глобальное значение.
Очищенное значение больше не будет доступно в этом запросе и последующих запросах.
createAbsoluteUrl() метод
public string createAbsoluteUrl(string $route, array $params=array ( ), string $schema='', string $ampersand='&') | ||
| $route | string | маршрут URL. Должен быть в формате 'ControllerID/ActionID'. |
| $params | array | дополнительные параметры GET (имя=>значение). И имя, и значение будут закодированы в URL. |
| $schema | string | схема для использования (например, http, https). Если пусто, будет использована схема текущего запроса. |
| $ampersand | string | разделитель пар имя-значение в URL. |
| {return} | string | сформированный URL |
public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&')
{
$url=$this->createUrl($route,$params,$ampersand);
if(strpos($url,'http')===0 || strpos($url,'//')===0)
return $url;
else
return $this->getRequest()->getHostInfo($schema).$url;
}
Создаёт абсолютный URL на основе заданной информации о контроллере и действии.
createUrl() метод
public string createUrl(string $route, array $params=array ( ), string $ampersand='&') | ||
| $route | string | маршрут URL. Должен быть в формате 'ControllerID/ActionID'. |
| $params | array | дополнительные параметры GET (имя=>значение). И имя, и значение будут закодированы в URL. |
| $ampersand | string | разделитель пар имя-значение в URL. |
| {return} | string | сформированный URL |
public function createUrl($route,$params=array(),$ampersand='&')
{
return $this->getUrlManager()->createUrl($route,$params,$ampersand);
}
Создаёт относительный URL на основе заданной информации о контроллере и действии.
displayError() метод
public void displayError(integer $code, string $message, string $file, string $line) | ||
| $code | integer | код ошибки |
| $message | string | сообщение об ошибке |
| $file | string | файл ошибки |
| $line | string | строка ошибки |
public function displayError($code,$message,$file,$line)
{
if(YII_DEBUG)
{
echo "<h1>PHP Error [$code]</h1>\n";
echo "<p>$message ($file:$line)</p>\n";
echo '<pre>';
$trace=debug_backtrace();
// skip the first 3 stacks as they do not tell the error position
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($trace as $i=>$t)
{
if(!isset($t['file']))
$t['file']='unknown';
if(!isset($t['line']))
$t['line']=0;
if(!isset($t['function']))
$t['function']='unknown';
echo "#$i{$t['file']}({$t['line']}): ";
if(isset($t['object']) && is_object($t['object']))
echo get_class($t['object']).'->';
echo "{$t['function']}()\n";
}
echo '</pre>';
}
else
{
echo "<h1>PHP Error [$code]</h1>\n";
echo "<p>$message</p>\n";
}
}
Отображает захваченную ошибку PHP. Этот метод отображает ошибку в HTML, когда нет активного обработчика ошибок.
displayException() метод
public void displayException(Exception $exception) | ||
| $exception | Исключение | неперехваченное исключение |
public function displayException($exception)
{
if(YII_DEBUG)
{
echo '<h1>'.get_class($exception)."</h1>\n";
echo '<p>'.$exception->getMessage().' ('.$exception->getFile().':'.$exception->getLine().')</p>';
echo '<pre>'.$exception->getTraceAsString().'</pre>';
}
else
{
echo '<h1>'.get_class($exception)."</h1>\n";
echo '<p>'.$exception->getMessage().'</p>';
}
}
Отображает неперехваченное исключение PHP. Этот метод отображает исключение в HTML, когда нет активного обработчика ошибок.
end() метод
public void end(integer $status=0, boolean $exit=true) | ||
| $status | integer | код завершения (значение 0 означает нормальное завершение, а другие значения означают аномальное завершение). |
| $exit | boolean | вызвать ли функцию exit() PHP. Этот параметр доступен начиная с версии 1.1.5. По умолчанию true, что означает, что функция exit() PHP будет вызвана в конце этого метода. |
public function end($status=0,$exit=true)
{
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(new CEvent($this));
if($exit)
exit($status);
}
Завершает приложение. Этот метод заменяет PHP функцию exit(), вызывая onEndRequest перед завершением.
findLocalizedFile() метод
public string findLocalizedFile(string $srcFile, string $srcLanguage=NULL, string $language=NULL) | ||
| $srcFile | string | исходный файл |
| $srcLanguage | string | язык, на котором написан исходный файл. Если null, используется язык приложения source language. |
| $language | string | желаемый язык, на который нужно перевести файл. Если null, будет использоваться язык приложения application language. |
| {return} | string | соответствующий локализованный файл. Исходный файл возвращается, если локализованная версия не найдена или если язык исходного файла совпадает с желаемым языком. |
public function findLocalizedFile($srcFile,$srcLanguage=null,$language=null)
{
if($srcLanguage===null)
$srcLanguage=$this->sourceLanguage;
if($language===null)
$language=$this->getLanguage();
if($language===$srcLanguage)
return $srcFile;
$desiredFile=dirname($srcFile).DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.basename($srcFile);
return is_file($desiredFile) ? $desiredFile : $srcFile;
}
Возвращает локализованную версию указанного файла.
Поиск выполняется на основе указанного кода языка. В частности, файл с таким же именем будет искаться в подкаталоге с именем идентификатора локали. Например, для файла "path/to/view.php" и идентификатора локали "zh_cn" локализованный файл будет искаться как "path/to/zh_cn/view.php". Если файл не найден, возвращается исходный файл.
Для согласованности рекомендуется, чтобы идентификатор локали был указан строчными буквами и в формате LanguageID_RegionID (например, "en_us").
getBasePath() метод
public string getBasePath() | ||
| {return} | string | корневой каталог приложения. По умолчанию 'protected'. |
public function getBasePath()
{
return $this->_basePath;
}
Возвращает корневой путь приложения.
getBaseUrl() метод
public string getBaseUrl(boolean $absolute=false) | ||
| $absolute | boolean | указывать абсолютный URL. По умолчанию false, что означает возвращение относительного URL. |
| {return} | string | относительный URL приложения. |
public function getBaseUrl($absolute=false)
{
return $this->getRequest()->getBaseUrl($absolute);
}
Возвращает относительный URL приложения. Это метод-короткая запись для CHttpRequest::getBaseUrl().
См. также
getCache() метод
public CCache getCache() | ||
| {return} | CCache | компонент кэширования приложения. Null, если компонент отключён. |
public function getCache()
{
return $this->getComponent('cache');
}
Возвращает компонент кэширования.
getController() метод (доступен с версии v1.1.8)
public CController getController() | ||
| {return} | CController | текущий активный контроллер. В этом базовом классе возвращается Null. |
public function getController()
{
return null;
}
getCoreMessages() метод
public CPhpMessageSource getCoreMessages() | ||
| {return} | CPhpMessageSource | переводы основных сообщений |
public function getCoreMessages()
{
return $this->getComponent('coreMessages');
}
Возвращает компонент переводов основных сообщений.
getDateFormatter() метод
public CDateFormatter getDateFormatter() | ||
| {return} | CDateFormatter | форматер дат, зависящий от локали. Будет использоваться текущая локаль приложения. |
public function getDateFormatter()
{
return $this->getLocale()->getDateFormatter();
}
Возвращает форматировщик дат, зависящий от локали.
getDb() метод
public CDbConnection getDb() | ||
| {return} | CDbConnection | соединение с базой данных |
public function getDb()
{
return $this->getComponent('db');
}
Возвращает компонент соединения с базой данных.
getErrorHandler() метод
public CErrorHandler getErrorHandler() | ||
| {return} | CErrorHandler | компонент обработчика ошибок приложения. |
public function getErrorHandler()
{
return $this->getComponent('errorHandler');
}
Возвращает компонент обработчика ошибок.
getExtensionPath() метод
public string getExtensionPath() | ||
| {return} | string | каталог, содержащий все расширения. По умолчанию каталог 'extensions' в 'protected'. |
public function getExtensionPath()
{
return Yii::getPathOfAlias('ext');
}
Возвращает корневой каталог, содержащий все сторонние расширения.
getFormat() метод
public CFormatter getFormat() | ||
| {return} | CFormatter | компонент форматирования |
public function getFormat()
{
return $this->getComponent('format');
}
Возвращает компонент форматирования.
getGlobalState() метод
public mixed getGlobalState(string $key, mixed $defaultValue=NULL) | ||
| $key | string | имя возвращаемого значения |
| $defaultValue | mixed | значение по умолчанию. Если глобальное значение с указанным именем не найдено, возвращается это значение. |
| {return} | mixed | глобальное значение с указанным именем |
public function getGlobalState($key,$defaultValue=null)
{
if($this->_globalState===null)
$this->loadGlobalState();
if(isset($this->_globalState[$key]))
return $this->_globalState[$key];
else
return $defaultValue;
}
Возвращает глобальное значение.
Глобальное значение сохраняется между сессиями пользователей и запросами.
См. также
getHomeUrl() метод
public string getHomeUrl() | ||
| {return} | string | URL домашней страницы |
public function getHomeUrl()
{
if($this->_homeUrl===null)
{
if($this->getUrlManager()->showScriptName)
return $this->getRequest()->getScriptUrl();
else
return $this->getRequest()->getBaseUrl().'/';
}
else
return $this->_homeUrl;
}
getId() метод
public string getId() | ||
| {return} | string | уникальный идентификатор приложения. |
public function getId()
{
if($this->_id!==null)
return $this->_id;
else
return $this->_id=sprintf('%x',crc32($this->getBasePath().$this->name));
}
Возвращает уникальный идентификатор приложения.
getLanguage() метод
public string getLanguage() | ||
| {return} | string | язык пользователя, для которого должно быть нацелено приложение. По умолчанию исходный язык. |
public function getLanguage()
{
return $this->_language===null ? $this->sourceLanguage : $this->_language;
}
Возвращает язык пользователя, для которого приложение должно быть нацелено.
getLocale() метод
public CLocale getLocale(string $localeID=NULL) | ||
| $localeID | string | идентификатор локали (например, en_US). Если null, будет использован идентификатор языка приложения. |
| {return} | CLocale | экземпляр CLocale |
public function getLocale($localeID=null)
{
return call_user_func_array(array($this->localeClass, 'getInstance'),array($localeID===null?$this->getLanguage():$localeID));
}
Возвращает экземпляр локали.
getLocaleDataPath() метод (доступен начиная с v1.1.0)
public string getLocaleDataPath() | ||
| {return} | string | директория, содержащая данные локали. По умолчанию 'framework/i18n/data'. |
public function getLocaleDataPath()
{
$vars=get_class_vars($this->localeClass);
if(empty($vars['dataPath']))
return Yii::getPathOfAlias('system.i18n.data');
return $vars['dataPath'];
}
Возвращает директорию с данными локали.
getMessages() метод
public CMessageSource getMessages() | ||
| {return} | CMessageSource | переводы сообщений приложения |
public function getMessages()
{
return $this->getComponent('messages');
}
Возвращает компонент переводов сообщений приложения.
getNumberFormatter() метод
public CNumberFormatter getNumberFormatter() | ||
| {return} | CNumberFormatter | форматер чисел, зависящий от локали. Будет использована текущая локаль приложения. |
public function getNumberFormatter()
{
return $this->getLocale()->getNumberFormatter();
}
getRequest() метод
public CHttpRequest getRequest() | ||
| {return} | CHttpRequest | компонент запроса |
public function getRequest()
{
return $this->getComponent('request');
}
Возвращает компонент запроса.
getRuntimePath() метод
public string getRuntimePath() | ||
| {return} | string | директория для хранения временных файлов. По умолчанию 'protected/runtime'. |
public function getRuntimePath()
{
if($this->_runtimePath!==null)
return $this->_runtimePath;
else
{
$this->setRuntimePath($this->getBasePath().DIRECTORY_SEPARATOR.'runtime');
return $this->_runtimePath;
}
}
Возвращает директорию для хранения временных файлов.
getSecurityManager() метод
public CSecurityManager getSecurityManager() | ||
| {return} | CSecurityManager | компонент менеджера безопасности приложения. |
public function getSecurityManager()
{
return $this->getComponent('securityManager');
}
Возвращает компонент менеджера безопасности.
getStatePersister() метод
public CStatePersister getStatePersister() | ||
| {return} | CStatePersister | компонент сохранения состояния приложения. |
public function getStatePersister()
{
return $this->getComponent('statePersister');
}
Возвращает компонент сохранения состояния.
getTimeZone() метод
public string getTimeZone() | ||
| {return} | string | часовой пояс, используемый этим приложением. |
public function getTimeZone()
{
return date_default_timezone_get();
}
Возвращает часовой пояс, используемый приложением. Это простой обёртку функции PHP date_default_timezone_get().
getUrlManager() метод
public CUrlManager getUrlManager() | ||
| {return} | CUrlManager | компонент менеджера URL |
public function getUrlManager()
{
return $this->getComponent('urlManager');
}
Возвращает компонент менеджера URL.
handleError() метод
public void handleError(integer $code, string $message, string $file, integer $line) | ||
| $code | integer | уровень поднятой ошибки |
| $message | string | сообщение об ошибке |
| $file | string | имя файла, в котором произошла ошибка |
| $line | integer | номер строки, в которой произошла ошибка |
public function handleError($code,$message,$file,$line)
{
if($code & error_reporting())
{
// disable error capturing to avoid recursive errors
restore_error_handler();
restore_exception_handler();
$log="$message ($file:$line)\nStack trace:\n";
$trace=debug_backtrace();
// skip the first 3 stacks as they do not tell the error position
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($trace as $i=>$t)
{
if(!isset($t['file']))
$t['file']='unknown';
if(!isset($t['line']))
$t['line']=0;
if(!isset($t['function']))
$t['function']='unknown';
$log.="#$i{$t['file']}({$t['line']}): ";
if(isset($t['object']) && is_object($t['object']))
$log.=get_class($t['object']).'->';
$log.="{$t['function']}()\n";
}
if(isset($_SERVER['REQUEST_URI']))
$log.='REQUEST_URI='.$_SERVER['REQUEST_URI'];
Yii::log($log,CLogger::LEVEL_ERROR,'php');
try
{
Yii::import('CErrorEvent',true);
$event=new CErrorEvent($this,$code,$message,$file,$line);
$this->onError($event);
if(!$event->handled)
{
// try an error handler
if(($handler=$this->getErrorHandler())!==null)
$handler->handle($event);
else
$this->displayError($code,$message,$file,$line);
}
}
catch(Exception $e)
{
$this->displayException($e);
}
try
{
$this->end(1);
}
catch(Exception $e)
{
// use the most primitive way to log error
$msg = get_class($e).': '.$e->getMessage().' ('.$e->getFile().':'.$e->getLine().")\n";
$msg .= $e->getTraceAsString()."\n";
$msg .= "Previous error:\n";
$msg .= $log."\n";
$msg .= '$_SERVER='.var_export($_SERVER,true);
error_log($msg);
exit(1);
}
}
}
Обрабатывает ошибки выполнения PHP, такие как предупреждения, уведомления.
Этот метод реализован как обработчик ошибок PHP. Требуется, чтобы константа YII_ENABLE_ERROR_HANDLER была определена как true.
Этот метод сначала вызывает событие onError. Если ошибка не обрабатывается никаким обработчиком событий, он вызывает errorHandler для обработки ошибки.
Приложение будет завершено этим методом.
handleException() метод
public void handleException(Exception $exception) | ||
| $exception | Exception | исключение, которое не было перехвачено |
public function handleException($exception)
{
// disable error capturing to avoid recursive errors
restore_error_handler();
restore_exception_handler();
$category='exception.'.get_class($exception);
if($exception instanceof CHttpException)
$category.='.'.$exception->statusCode;
// php <5.2 doesn't support string conversion auto-magically
$message=$exception->__toString();
if(isset($_SERVER['REQUEST_URI']))
$message.="\nREQUEST_URI=".$_SERVER['REQUEST_URI'];
if(isset($_SERVER['HTTP_REFERER']))
$message.="\nHTTP_REFERER=".$_SERVER['HTTP_REFERER'];
$message.="\n---";
Yii::log($message,CLogger::LEVEL_ERROR,$category);
try
{
$event=new CExceptionEvent($this,$exception);
$this->onException($event);
if(!$event->handled)
{
// try an error handler
if(($handler=$this->getErrorHandler())!==null)
$handler->handle($event);
else
$this->displayException($exception);
}
}
catch(Exception $e)
{
$this->displayException($e);
}
try
{
$this->end(1);
}
catch(Exception $e)
{
// use the most primitive way to log error
$msg = get_class($e).': '.$e->getMessage().' ('.$e->getFile().':'.$e->getLine().")\n";
$msg .= $e->getTraceAsString()."\n";
$msg .= "Previous exception:\n";
$msg .= get_class($exception).': '.$exception->getMessage().' ('.$exception->getFile().':'.$exception->getLine().")\n";
$msg .= $exception->getTraceAsString()."\n";
$msg .= '$_SERVER='.var_export($_SERVER,true);
error_log($msg);
exit(1);
}
}
Обрабатывает неперехваченные исключения PHP.
Этот метод реализован как обработчик исключений PHP. Требуется, чтобы константа YII_ENABLE_EXCEPTION_HANDLER была определена как true.
Этот метод сначала вызывает событие onException. Если исключение не обрабатывается никаким обработчиком событий, он вызывает errorHandler для обработки исключения.
Приложение будет завершено этим методом.
initSystemHandlers() метод
protected void initSystemHandlers() |
protected function initSystemHandlers()
{
if(YII_ENABLE_EXCEPTION_HANDLER)
set_exception_handler(array($this,'handleException'));
if(YII_ENABLE_ERROR_HANDLER)
set_error_handler(array($this,'handleError'),error_reporting());
}
Инициализирует обработчики ошибок.
loadGlobalState() метод
public void loadGlobalState() |
public function loadGlobalState()
{
$persister=$this->getStatePersister();
if(($this->_globalState=$persister->load())===null)
$this->_globalState=array();
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
}
Загружает данные глобального состояния из постоянного хранилища.
См. также
onBeginRequest() метод
public void onBeginRequest(CEvent $event) | ||
| $event | CEvent | параметр события |
public function onBeginRequest($event)
{
$this->raiseEvent('onBeginRequest',$event);
}
Вызывается НЕПОСРЕДСТВЕННО перед обработкой запроса приложением.
onEndRequest() метод
public void onEndRequest(CEvent $event) | ||
| $event | CEvent | параметр события |
public function onEndRequest($event)
{
if(!$this->_ended)
{
$this->_ended=true;
$this->raiseEvent('onEndRequest',$event);
}
}
Вызывается СРАЗУ ПОСЛЕ обработки запроса приложением.
onError() метод
public void onError(CErrorEvent $event) | ||
| $event | CErrorEvent | параметр события |
public function onError($event)
{
$this->raiseEvent('onError',$event);
}
Вызывается при возникновении ошибки выполнения PHP.
Обработчик события может установить свойство handled параметра события в true, чтобы указать, что дальнейшая обработка ошибки не требуется. В противном случае компонент приложения errorHandler продолжит обработку ошибки.
onException() метод
public void onException(CExceptionEvent $event) | ||
| $event | CExceptionEvent | параметр события |
public function onException($event)
{
$this->raiseEvent('onException',$event);
}
Вызывается при возникновении необработанного исключения PHP.
Обработчик события может установить свойство handled параметра события в true, чтобы указать, что дальнейшая обработка ошибки не требуется. В противном случае компонент приложения errorHandler продолжит обработку ошибки.
processRequest() метод
abstract public void processRequest() |
abstract public function processRequest();
Обрабатывает запрос. Именно здесь выполняется фактическая работа по обработке запроса. Производные классы должны переопределить этот метод.
registerCoreComponents() метод
protected void registerCoreComponents() |
protected function registerCoreComponents()
{
$components=array(
'coreMessages'=>array(
'class'=>'CPhpMessageSource',
'language'=>'en_us',
'basePath'=>YII_PATH.DIRECTORY_SEPARATOR.'messages',
),
'db'=>array(
'class'=>'CDbConnection',
),
'messages'=>array(
'class'=>'CPhpMessageSource',
),
'errorHandler'=>array(
'class'=>'CErrorHandler',
),
'securityManager'=>array(
'class'=>'CSecurityManager',
),
'statePersister'=>array(
'class'=>'CStatePersister',
),
'urlManager'=>array(
'class'=>'CUrlManager',
),
'request'=>array(
'class'=>'CHttpRequest',
),
'format'=>array(
'class'=>'CFormatter',
),
);
$this->setComponents($components);
}
Регистрирует основные компоненты приложения.
См. также
run() метод
public void run() |
public function run()
{
if($this->hasEventHandler('onBeginRequest'))
$this->onBeginRequest(new CEvent($this));
register_shutdown_function(array($this,'end'),0,false);
$this->processRequest();
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(new CEvent($this));
}
Запускает приложение. Этот метод загружает статические компоненты приложения. Производные классы обычно переопределяют этот метод, чтобы выполнить задачи, специфичные для приложения. Не забудьте вызвать родительскую реализацию, чтобы статические компоненты приложения загрузились.
saveGlobalState() метод
public void saveGlobalState() |
public function saveGlobalState()
{
if($this->_stateChanged)
{
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
$this->getStatePersister()->save($this->_globalState);
}
}
Сохраняет данные глобального состояния в постоянное хранилище.
См. также
setBasePath() метод
public void setBasePath(string $path) | ||
| $path | строка | корневой каталог приложения. |
public function setBasePath($path)
{
if(($this->_basePath=realpath($path))===false || !is_dir($this->_basePath))
throw new CException(Yii::t('yii','Application base path "{path}" is not a valid directory.',
array('{path}'=>$path)));
}
Устанавливает корневой каталог приложения. Этот метод можно вызывать только в начале конструктора.
setExtensionPath() метод
public void setExtensionPath(string $path) | ||
| $path | строка | каталог, содержащий все сторонние расширения. |
public function setExtensionPath($path)
{
if(($extensionPath=realpath($path))===false || !is_dir($extensionPath))
throw new CException(Yii::t('yii','Extension path "{path}" does not exist.',
array('{path}'=>$path)));
Yii::setPathOfAlias('ext',$extensionPath);
}
Устанавливает корневой каталог, содержащий все сторонние расширения.
setGlobalState() метод
public void setGlobalState(string $key, mixed $value, mixed $defaultValue=NULL) | ||
| $key | строка | имя сохраняемого значения |
| $value | смешанный тип | сохраняемое глобальное значение. Должно быть сериализуемым. |
| $defaultValue | смешанный тип | значение по умолчанию. Если именованное глобальное значение совпадает с этим значением, оно будет очищено из текущего хранилища. |
public function setGlobalState($key,$value,$defaultValue=null)
{
if($this->_globalState===null)
$this->loadGlobalState();
$changed=$this->_stateChanged;
if($value===$defaultValue)
{
if(isset($this->_globalState[$key]))
{
unset($this->_globalState[$key]);
$this->_stateChanged=true;
}
}
elseif(!isset($this->_globalState[$key]) || $this->_globalState[$key]!==$value)
{
$this->_globalState[$key]=$value;
$this->_stateChanged=true;
}
if($this->_stateChanged!==$changed)
$this->attachEventHandler('onEndRequest',array($this,'saveGlobalState'));
}
Устанавливает глобальное значение.
Глобальное значение — это значение, сохраняющееся между сессиями пользователей и запросами. Убедитесь, что значение сериализуемо и десериализуемо.
См. также
setHomeUrl() метод
public void setHomeUrl(string $value) | ||
| $value | строка | URL домашней страницы |
public function setHomeUrl($value)
{
$this->_homeUrl=$value;
}
setId() метод
public void setId(string $id) | ||
| $id | строка | уникальный идентификатор приложения. |
public function setId($id)
{
$this->_id=$id;
}
Устанавливает уникальный идентификатор приложения.
setLanguage() метод
public void setLanguage(string $language) | ||
| $language | строка | язык пользователя (например, 'en_US', 'zh_CN'). Если null, будет использован sourceLanguage. |
public function setLanguage($language)
{
$this->_language=$language;
}
Устанавливает язык, на котором будет отображаться приложение.
Это язык, который отображается пользователям. Если установлено null, используется исходный язык.
Если ваше приложение не нуждается в поддержке нескольких языков, вы всегда должны устанавливать этот язык в null, чтобы максимизировать производительность приложения.
setLocaleDataPath() метод (доступен начиная с v1.1.0)
public void setLocaleDataPath(string $value) | ||
| $value | строка | каталог, содержащий данные локали. |
public function setLocaleDataPath($value)
{
$property=new ReflectionProperty($this->localeClass,'dataPath');
$property->setValue($value);
}
Устанавливает каталог, содержащий данные локали.
setRuntimePath() метод
public void setRuntimePath(string $path) | ||
| $path | string | директория, в которой хранятся временные файлы. |
public function setRuntimePath($path)
{
if(($runtimePath=realpath($path))===false || !is_dir($runtimePath) || !is_writable($runtimePath))
throw new CException(Yii::t('yii','Application runtime path "{path}" is not valid. Please make sure it is a directory writable by the Web server process.',
array('{path}'=>$path)));
$this->_runtimePath=$runtimePath;
}
Устанавливает директорию для хранения временных файлов.
setTimeZone() метод
public void setTimeZone(string $value) | ||
| $value | string | часовой пояс, используемый этим приложением. |
public function setTimeZone($value)
{
date_default_timezone_set($value);
}
Устанавливает часовой пояс, используемый этим приложением. Это простой обертка над функцией PHP date_default_timezone_set().
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CApplication