Основным принципом, которым мы руководствовались в начале пути, и руководствуемся в процессе развития mzz, является следующее утверждение: "Огромным монолитным модулям, содержащим большой объём кода и предоставляющим конечному пользователю (и, конечно же, программисту) огромный и зачастую совершенно ненужный функционал - мы предпочитаем много мелких модулей, каждый из которых умеет делать хоть и не много, но зато качественно". Именно этот подход, по нашему мнению, позволит разработчикам выпускать качественные приложения быстрее, а сам процесс разработки - упростить.
Этому способствует основной принцип, заложенный в mzz: "Приложением управляют шаблоны". Это значит, что за запуск и непосредственно сам процесс работы приложения в первую очередь отвечает шаблон. В процессе запуска приложения - это активный шаблон, в процессе работы - шаблоны модулей. Запуск конкретных модулей также производится непосредственно из шаблона с помощью функции load.
Тут вы наверяняка спросите: "А зачем это было сделано?". Как часто в уже работающем сайте вам приходилось на какую-либо из существующих страниц или её элементов (например "меню", "колонка" и т.д.) вывести результат работы одного из существующих модулей? Например: лидеры продаж магазина, последние посты форума или новости, баннер, ... Этот список можно продолжать долго. Для этого вам нужно было или править скрипты, которые отвечают за вывод этих страниц/элементов, добавлять в них вызов нужных модулей, передавать данные в шаблон, при этом следить, чтобы имена переменных одного модуля не пересекались с именами переменных другого модуля. Мы предлагаем другое решение - просто укажите в нужном месте в шаблоне запуск модуля с нужными параметрами. И всё! Модуль сам запустится в нужном для него окружении, т.е. запускаемый модуль даже не будет подозревать о том, кто и откуда его запустил. Это создаёт отличные перспективы для совмещения функционалов различных модулей: модуль "новости" + модуль "комментарии" == модуль "комментируемые новости". О процессе создания модулей можно прочитать в этом разделе.
В приложении, написанном с использованием mzz, всё является объектами. Из этого утверждения следует исходить, планируя схему БД, действия, производимые над объектами, систему авторизации.