Розширення 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 спочатку був спроектований таким чином, щоб будь-яку його частину можна було змінити і доповнити для будь-яких потреб.