Идея для архитектуры приложения на yii. Часть 1. Введение и конфиги

Добрый день. Сегодня я хотел бы поделиться простым рецептом для архитектуры приложений малого и среднего размера на Yii. Идея навеяна разработчиком 2GIS.API Алексеем Спиридоновым. Видео с конференции: www.youtube.com/watch?v=GyX5uAnApKg&feature=plcp

Основная проблема начинающих разработчиков в том, что они не понимают принципа MVC. Приведу толкование MVC с точки зрения википедии в миллионный раз:
Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») — схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.

Итак, что мы должны сделать согласно этой схеме? Правильно, отделить логику от представления. Но это еще не все, логику приложения необходимо разделить на сервисные слои. В этом и заключается вся сила mvc.

Для начала определим, что же должен делать каждый слой MVC.

M. Модель
Модель данных. То есть все что у нас хранится в базах данных (mysql, sqlite, couch, redis и тд). Работа с данными происходит только внутри модели.

V. Представление
Представление данных. Сценарии, описывающие, как данные моделей будут представлены конечному пользователю. Это может быть html страница, json массив, qr код и т.д.

C. Контроллер
Это сердце приложение. Контроллер определяет как ведёт себя приложение. Какие модели и представления использует. Тут-то чаще всего и городят разработчики полную ересь. Начинают обновлять данные в базе данных, генерируют html сущности, и это только самые безобидные примеры.

Собственно основная мысль архитектуры