Розширення Yii ============== Розширення функціоналу Yii - стандартна практика у процесі розробки. Наприклад, для написання нового контролера, вам необхідно розширити Yii шляхом успадкування його класу [CController]; для написання віджету - класа [CWidget] або класу вже існуючого віджету. Якщо дописаний код оформлений для використання сторонніми розробниками, ми називаємо його *розширенням (extension)*. Як правило, кожне розширення служить лише для однієї мети. Використовуючи термінологію, прийняту в Yii, розширення можна класифікувати наступним чином: * [компонент додатка](/doc/guide/basics.application#application-component); * [поведінка](/doc/guide/basics.component#component-behavior); * [віджет](/doc/guide/basics.view#widget); * [контролер](/doc/guide/basics.controller); * [дія](/doc/guide/basics.controller#action); * [фільтр](/doc/guide/basics.controller#filter); * [команда консолі](/doc/guide/topics.console); * валідатор: компонент, що успадковує клас [CValidator]; * помічник: клас, який містить лише статичні методи, схожий із глобальної функцією, що використовує імʼя класу в якості простору імен; * [модуль](/doc/guide/basics.module): самодостатня програмна одиниця, що складається з [моделей](/doc/guide/basics.model), [дій](/doc/guide/basics.view), [контролерів](/doc/guide/basics.controller) та необхідних компонентів. Модуль багато в чому схожий з [додатком](/doc/guide/basics.application). Основна відмінність полягає в тому, що модулі входять до складу додатка. Наприклад, у нас може бути модуль, який реалізує функціонал управління користувачами. Втім, розширення може і не відповідати ні одній із перерахованих категорій. Yii спочатку був спроектований таким чином, щоб будь-яку його частину можна було змінити і доповнити для будь-яких потреб.