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