Основи додаток, 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 ().
Ініціалізація обробника помилок.
Реєстрація компонентів ядра.
Завантаження конфігурації програми.
- реєстрація поводжень додатки;
- завантаження статичних компонентів програми.
- збір інформації про запит;
- створення контролера;
- запуск контролера.