Основи додаток, the definitive guide to yii, yii php framework

Об'єкт додатки (application) інкапсулює контекст виконання запиту. Основне завдання програми - зібрати інформацію про запит і передати її відповідному контролеру для подальшої обробки. Також додаток є централізованим сховищем конфігурації програми. Саме тому об'єкт докладання також називають фронт-контролером.

Об'єкт додатка створюється вхідним скриптом як одинак ​​(singleton). Примірник програми доступний з будь-якої його точки за допомогою Yii :: app ().

1. Конфігурація додатка ¶

За замовчуванням об'єкт докладання - це екземпляр класу CWebApplication. який може бути налаштований з використанням конфігураційного файлу (або масиву). Необхідні значення властивостей встановлюються в момент створення екземпляра додатка. Альтернативний шлях налаштування програми - розширення класу CWebApplication.

Конфігурація - це масив пар ключ-значення, де кожен ключ являє собою ім'я властивості екземпляра додатка, а значення - початкове значення відповідного властивості. Наприклад, наступна конфігурація встановлює значення властивостей додатка name та defaultController:

Варто зазначити, що додаток, як і більшість класів Yii, є компонентом. Це означає, що:

  • Ви не можете присвоювати значення не оголошеним в класі властивостями.
  • Додаток підтримує властивості, оголошені через геттери і сеттери, тобто можна конфігурувати властивість, задана setImport наступним чином:

Зазвичай конфігурація зберігається в окремому PHP-скрипт (наприклад, protected / config / main.php). Скрипт повертає конфігураційний масив:

Щоб скористатися конфігурацією, необхідно передати ім'я конфігураційного файлу в якості аргументу конструктору додатка або методу Yii :: createWebApplication (). як показано нижче. Зазвичай це робиться у вхідному скрипті:

Підказка: Якщо конфігурація дуже громіздка, можна розділити її на кілька файлів, кожен з яких повертає частину конфігураційного масиву. Потім в основному файлі конфігурації необхідно підключити ці файли, використовуючи include (). і з'єднати масиви-частини в єдиний конфігураційний масив.

2. Базова директорія додатка ¶

Базовою директорією додатку називається коренева директорія, що містить всі основні, з точки зору безпеки, PHP-скрипти і дані. За замовчуванням це піддиректорія protected. що знаходиться в директорії, що містить вхідний скрипт. Змінити її місце розташування можна, встановивши властивість basePath в конфігурації програми.

Вміст базової директорії має бути закрита від доступу з веб. При використанні веб-сервера Apache HTTP server це можна зробити шляхом додавання в базову директорію файлу .htaccess такого змісту:

3. Компоненти додатку ¶

Функціональність об'єкта додатку може бути легко модифікована і розширена завдяки компонентної архітектури. Додаток управляє набором компонентів, кожен з яких реалізує набір певних можливостей. Наприклад, додаток робить попередню обробку запиту користувача, використовуючи компоненти CUrlManager і CHttpRequest.

Змінюючи значення властивості components. можна налаштувати класи і значення властивостей будь-якого компонента, використовуваного додатком. Наприклад, можна настроїти компонент CMemCache так, щоб він використовував кілька memcache-серверів для кешування:

В даному прикладі ми додали елемент cache до масиву components. Елемент cache вказує, що класом компонента є CMemCache. а також встановлює його властивість servers.

Для доступу до компоненту додатка використовуйте Yii :: app () -> ComponentID. де ComponentID - це ідентифікатор компонента (наприклад, Yii :: app () -> cache).

Компонент може бути деактивовано шляхом установки параметра enabled в його конфігурації рівним false. При зверненні до деактивовано компоненту буде повернуто null.

Підказка: За замовчуванням компоненти програми створюються на вимогу. Це означає, що екземпляр компонента може бути не створений взагалі в разі, якщо це не потрібно при обробці користувальницького запиту. В результаті загальна продуктивність програми може не постраждати, навіть якщо в конфігурації вказано безліч компонентів.

При необхідності обов'язкового створення екземплярів компонентів (наприклад, CLogRouter) незалежно від того, використовуються вони чи ні, вкажіть їх ідентифікатори в значенні конфігураційного властивості preload.

4. Ключові компоненти програми ¶

Yii визначає набір компонентів ядра, які надають можливості, необхідні для більшості веб-додатків. Наприклад, компонент request використовується для збору інформації про запит користувача і надає різну інформацію, таку як URL і cookies. Ставлячи властивості компонентів, можна змінювати стандартну поведінку Yii практично як завгодно.

Далі перераховані ключові компоненти, зумовлені класом CWebApplication:

assetManager. CAssetManager - управляє публікацією файлів ресурсів (asset files);

cache. CCache - надає можливості кешування даних; врахуйте, що ви повинні вказати використовуваний клас (наприклад, CMemCache. CDbCache), інакше при зверненні до компоненту буде повернуто null;

coreMessages. CPhpMessageSource - надає переклади системних повідомлень Yii-фреймворка;

db. CDbConnection - обслуговує з'єднання з базою даних; зверніть увагу, що для використання компонента необхідно встановити властивість connectionString;

errorHandler. CErrorHandler - обробляє спіймані помилки і виключення PHP;

format. CFormatter - форматує дані для їх подальшого відображення.

messages. CPhpMessageSource - надає переклади повідомлень, використовуваних в Yii-додатку;

request. CHttpRequest - містить інформацію про запиті;

securityManager. CSecurityManager - надає функції, пов'язані з безпекою (наприклад, хешування, шифрування);

session. CHttpSession - забезпечує функціональність, пов'язану із сесіями;

statePersister. CStatePersister - надає метод для збереження глобального стану;

urlManager. CUrlManager - надає функції парсинга і формування URL;

user. CWebUser - надає ідентифікаційну інформацію поточного користувача;

5. Життєвий цикл додатку ¶

Життєвий цикл додатку при обробці користувальницького запиту виглядає наступним чином:

Попередня ініціалізація додатку через CApplication :: preinit ().

Ініціалізація обробника помилок.

Реєстрація компонентів ядра.

Завантаження конфігурації програми.

  • реєстрація поводжень додатки;
  • завантаження статичних компонентів програми.
    • збір інформації про запит;
    • створення контролера;
    • запуск контролера.