Шаблонизатор с синтаксисом PHP и наследованием.

HraKK

Мудак
Команда форума
Активный шаблон по сути представляет шаблон который данные для отображения не только принимает, но и может запросить у контроллера в виде другого шаблона.

И создание сайта с вводом хелперов начинает превращаться в реальную сборку по кубикам. Ведь будет ли на этой странице тот или иной функционал зависит только от шаблона.

Надо новости на странице - добавили хелпер новостей. Надо каталог - вставили каталог.

При наличии достаточных модулей в системе разработка сайта превращается лишь в натягивании шаблона.

У меня на создание типового магазина с небольшим изменением функционала уходило в среднем 30-60 минут.
 

Absinthe

жожо
HraKK хелперы виджетов? Или более глобально: даже главные шаблоны это делают?
Если первое, то не понятна фраза на прошлой странице.
 

HraKK

Мудак
Команда форума
любые шаблоны могут дернуть любую недостающую им информацию. По сути вью это как сторонее приложение(допустим флеш) которое дергает нужную им информацию
 

Духовность™

Продвинутый новичок
HraKK
а как post запросы с таким подходом обрабатывать? интересует работа с формой, автозаполнением при ошибке, например
 

weregod

unserializer
ненене, на клиенте только контроллер, который решает, чо-каво дёрнуть и что с результатом поделать
 

HraKK

Мудак
Команда форума
Духовность™
а какая разнница пост, гет или амф запрос. Бекэнд решит какой из шаблонов показывать (в данном случае форму) а вью отобразит нужные данные.
 

С.

Продвинутый новичок
Krishna, когда тебе надоест постоянно прописывать одну и ту же информацию в 2-3 местах проекта (регулярно вылавливая несоответствия), то ты придешь к активным шаблонам.
 

Krishna

Продался Java
С.
Я к активным шаблонам никогда не приду, и уж точно в той их версии, где кто-то опрашивает контроллер. Ибо уже нах непонятно какой смысл дальше играть во все эти контроллеры и модели, если основные принципы MVC посланы нах :)
 

Krishna

Продался Java
когда тебе надоест постоянно прописывать одну и ту же информацию в 2-3 местах проекта (регулярно вылавливая несоответствия),
Это кстати характерно именно для "активных шаблонов" (которые суть любимая всеми новичками лапша кода и вёрстки, под новым модным названием и условным непонятно зачем нужным делением классов на M,V,C.
 

Absinthe

жожо
А ведь вместо активных шаблонов можно создать свой контекст, использовать виджеты, кастом теги, т.е. три доступные реализации в классических шаблонах.
 

fixxxer

К.О.
Партнер клуба
Чото я тоже не понял зачем вьюхе что-то брать у контроллера.

Зачем у модели ясно (но в рамках веба применений не вижу - на десктопе-то да, там это всегда надо)

Разумным видится вариант с HMVC, но конфигурация контроллера из вьюхи это как-то странно - все равно у каждого уровня свой контроллер же. А вьюха с моделью конечно общаться могут до посинения.


когда тебе надоест постоянно прописывать одну и ту же информацию в 2-3 местах проекта (регулярно вылавливая несоответствия)
HMVC again. Layer-ам никто не мешает наследоваться (хинт!)
 

Rin

*
MVC, Model—View—Controller, Модель—Шаблон—Контроллер -- идеология построения приложений, подразумевающая их жесткое разделение на три элемента: внутренние сервисы системы, бизнес-логика, пользовательский интерфейс. В чистом виде применяется в основном при программировании графических пользовательских интерфейсов (GUI), в веб-программирование привнесена искусственно. Ведущую роль в MVC играет контроллер.

Model (Модель) -- предметная область системы, ее "содержание". Обычно модель включает в себя такие элементы, как база данных системы, а также код, непосредственно с ней работающий. Иногда модель называют "ядром" системы, подразумевая, что она содержит функции низкого уровня для работы с данными.

View (Шаблон, Вид) -- элемент применяется при формировании окончательного вида страницы, т. е. хранит ее представление. Конечно, у каждой страницы может иметься несколько альтернативных шаблонов. Английское слово "view" можно также перевести как "вид", что означает внешний вид страницы.

Controller (Контроллер) -- код бизнес-логики, занимающийся приемом данных от пользователя, а также выступающий посредником между моделью и шаблоном. Например, в сценарии гостевой книги модель может хранить все записи, оставленные пользователями (сколько бы их ни было), а шаблон — отображать по 10 сообщений на страницу. В этом случае выборкой очередных 10 сообщений из базы данных модели, а также формированием списка URL следующих и предыдущих страниц книги занимается контроллер.

Внося в контроллер информацию об используемых им шаблонах, мы тем самым заставляем его содержать сведения об оформлении сайта, которые должны бы содержаться в шаблоне. В результате имеем смешение кода и оформления!

Активный шаблон (Pull-шаблон) -- шаблон, который включает в себя элементы языка программирования, такие как ветвление, циклы, включения и т. д. Активный Шаблон можно "выполнить", как обычную программу. В активном шаблоне легко управлять последовательностью выполнения блоков и их зависимостью друг от друга.

Пассивный шаблон (Push-шаблон) -- шаблон, содержащий лишь основные элементы форматирования страницы, однако не включающий информации, в каком порядке и количестве они должны быть выведены. Пассивный шаблон нельзя "запустить", он может быть только обработан некоторым контроллером, воспринимающим его, как обычный набор данных.

Компонентный подход -- развитие системы MVC, в котором ведущая роль принадлежит шаблону, а не контроллеру. Контроллеры в компонентном подходе называют компонентами. Шаблон (обязательно активный) самостоятельно определяет, какие компоненты нужны для его обработки, и подключает соответствующий программный код. Элементы компонентного подхода: Шаблон, Модель, Компоненты или Model-View-Component

Component (Компонент) -- элемент компонентного подхода, содержащий часть бизнес-логики веб-приложения. Компоненты занимаются приемом формы от браузера пользователя, а также "общением" с моделью для выборки из неё тех данных, которые необходимы для показа на странице.

Блок -- составная часть шаблона компонентного подхода. Задаёт оформление некоторого фиксированного участка страницы (например, блок новостей, блок авторизации, блок названия, блок "хлебных крошек" и т. д.). Обычно каждому блоку соответствует не более одного компонента (но может не соответствовать и ни одного; в таком случае говорят о статическом блоке).

Добавлено 06.11.2011
В книге Котерова (стр.977-1000) есть сравнение MVC и компонентного подхода. Я не полностью согласен с автором, но во многом он прав.
 

С.

Продвинутый новичок
Откуда эта лабуда?

<<предметная область системы, ее "содержание">> и <<код бизнес-логики>> есть суть одно и то же. Почему эти два понятия попали в разные компоненты?

<<код бизнес-логики, занимающийся приемом данных от пользователя>> Как бизнес-логика может заниматься приемом данных от пользователя? Что за чушь?

По тексту далее понятно, что описание модели и контролера перепутаны между собой. И это путаница вокруг MVC царит повсеместно.
 

fixxxer

К.О.
Партнер клуба
Rin
феерическая ерунда. Контроллер обрабатывает входящий запрос, инициализирует модели и вьюхи, и связывает их друг с другом. Больше он НИЧЕГО не делает.

ну то есть конечно никто не запрещает написать иначе, только это нельзя называть MVC
 

MiksIr

miksir@home:~$
Я так понимаю, что большинство людей все же использует не HMVC, а вызовы получения данных прямо из шаблона. В лучшем случае используя хелперы, типа News->get_news_for_front, которые играют роль контроллера. Хотя HMVC выглядит более гибко...
 

Духовность™

Продвинутый новичок
Обычно модель включает в себя такие элементы, как база данных системы, а также код, непосредственно с ней работающий
http://ru.wikipedia.org/wiki/MVC#.D0.9D.D0.B0.D0.B8.D0.B1.D0.BE.D0.BB.D0.B5.D0.B5_.D1.87.D0.B0.D1.81.D1.82.D1.8B.D0.B5_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D0.B8
Controller (Контроллер) -- код бизнес-логики
Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, валидировал, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php файла для каждой страницы приложения.
http://zendframework.ru/anonses/model-with-mvc
 

Ирокез

бессмертный пони
Команда форума
Партнер клуба
Вообще есть такое подозрение, что программисты заигрались с паттернами, считая кто больше выучит умных слов, не притворяя их в практику тот и круче. имхо конечно, не код должен вытекать из паттерна, а паттерн из кода, не написав достаточное количество кода, врятли можно понять что дейтвительно может являться паттерном, это касаемо и шаблонизаторов, он должен выбираться из решаемой задачи.
 
Сверху