Движок, контролер, шаблонизатор

mak_sim2001

Новичок
Движок, контролер, шаблонизатор

Помогите мне разобратся с этими понятиями. Как они связаны между собой?
Например что включается в понятие шаблонизатор, я так понимаю что использование шаблонизатора подразумевает использование контролера.
А ещё интересно что включается в понятие "движок сайта"?
 

mak_sim2001

Новичок
Mr_Max
тогда что такое шаблонизатор??? Правильно ли я понимаю что MVC (в PHP) подразумевает(включает в себя) использование шаблонов для отделения логики программы от логики отображения.

-~{}~ 29.10.07 22:36:

Т.е. "ипользование" MVC подразумевает отделение логики программы от логики отображения.
 

Фанат

oncle terrible
Команда форума
некоторые, особо посвященные, утверждают, что шаблон - это только часть view.

а контроллер - он не обязательно в MVC.
бывает еще видеоконтроллер. люблюу локальную управляющую конструкцию можно назвать контроллером
 

mak_sim2001

Новичок
некоторые, особо посвященные, утверждают, что шаблон - это только часть view.
шаблон имеется в ввиду шаблонизатор? если да то меня почему-то тоже такое впечатление сложилось. Это ошибочно? Почему?
Ещё такой вопрос например "smarty" он подразумевает что будет использоватся MVC? Либо он независит к чему его будут лепить. Либо он сам по себе уже есть MVC?
Просто большенство web-проектов которые используют шаблонизатор используют архитектуру MVC, даже если под шаблонизатором подразумевается native php.(сложилось такое впечатление)
Блин исходя из этого получается что шаблонизатор = архитектура MVC в PHP?
 

mak_sim2001

Новичок
Т.е. шаблонизатор по сути содержит только инструменты для обработки шаблонов и правила написания шаблонов.
 

AmdY

Пью пиво
Команда форума
юзай, как тебе удобно, хоть натив, хоть смартю, главное не делай коктеля из РНР и HTML, а то потом плохо станет. ИМХО начинать лучше с натив, чтобы лучше уловить смысл.
В смарти есть возможность выходить за рамки View, что не согласовывается с идеей MVC.
MVC - это концепция написания хорошего кода, но это не обозначает, что нужно всё загонять в определённые рамки.
 

jonjonson

Охренеть
MVC вообще никоим боком не связан с шаблонизацией. Шаблонизация может быть использована и в модели, и в контроллере, и в отображении. Никто не заставляет никого реализовывать View с использованием шаблонизатора. Просто это оказалось удобно для формирования xhtml документов.
 

Arekus

Новичок
Тут уместно будет вспомнить про понятие "слой" (по Фаулеру, "Разработка корпоративных приложений"). Так вот, на примере MVC мы имеем три слоя (например):
model - работает непосредственно с данными
controller - логика поведения
view - отображение.
Каждый слой работает со своей областью зная только интерфейс обращения к ближайшему слою (т.е. модель во вьюшку, и наоборот, не леpen).
Теперь в рамках этой модели легко определяются выписанные в вопросе термины:
- движок - совокупность кода реализующую устойчивую работу всех слоев
- контроллер - по определению выше
- шаблонизатор - класс из слоя вью отвечающий за вывод информации.
 

mak_sim2001

Новичок
AmdY
А какие есть альтернативы MVC?

jonjonson
Да, только она по сути реализует идеи которые провозгласили шаблонизаторы.
 

Arekus

Новичок
Автор оригинала: mak_sim2001
А какие есть альтернативы MVC?
Основная - не использовать его. Например в html-коде вставить запрос в базу и выводить что по нему пришло. Или когда каждый объект и пишет в базу, и формирует ко для клиента и т.п.
Для разработки, поддержки и развития серьезных проектов пока удобней MVC ничего нет.
 

Pigmeich

Новичок
mak_sim2001
MVC - это не догма. Это руководство к действию.

Можно сократить его до MV, например.

Если с английским нормально - почитай такую статью. Только не надо понимать её буквально - т.е. что всё фигня. Просто сложность представления зависит от размера проекта.
 

atv

Новичок
А какие есть альтернативы MVC?
MVC, это просто типовая архитектура, причём очень укрупнённая. Каждый из этих слоёв сам состоит из множества других слоёв приложения. Любую архитектуру приложения, которое работает с данными и их отображением можно подогнать под MVC архитектуру. Соответственно, и альтернативы, как таковой, нет. Различия архитектур начинают проявлятся на более низких уровнях приложения, т.е. на более детальных.

Так как реальное приложение не напишешь с использованием всего лиш трёх слоёв (точнее можно написать, но это будет не лучше лапши), то и толку от этой типовой архитектуры маловато, только споры постоянно возникают.
 

jonjonson

Охренеть
Автор оригинала: atv
Так как реальное приложение не напишешь с использованием всего лиш трёх слоёв (точнее можно написать, но это будет не лучше лапши), то и толку от этой типовой архитектуры маловато, только споры постоянно возникают.
Громкое и пустое заявление.
MVC - это паттерн, а вы явно не понимаете, что это означает. И реализация его не обязательно должна осуществляться через три модуля, класса или ещё нечто подобное. Паттерн MVC указывает три основные части любого приложения, процесс и направленность их взаимодействия. Они не обязательно во всех приложениях имеют равнозначную сложность. MVC - это очень общий паттерн, но позволяющий не наделать кучу глупостей.

Кстати, какие ещё слои вам понадобились хоть раз?
 

atv

Новичок
MVC - это паттерн, а вы явно не понимаете, что это означает.
И вы тоже.

MVC - это очень общий паттерн
И я об этом, потому и толку от него мало. Сколько я видел проектов, в которых в прямом смысле слова только эти три слоя и присутствуют, каждый из которых состоит из десятка методов по 300 строк каждый.

Знаете почему MVC стало таким популярным?... Потому что кажеться очень простым и понятным для новичков. Узнав что MVC описывает архитектуру практически любого приложения, новички с энтузиазмом кидаются создавать MVC фрэймворки, решив что во всём разобрались.

Кстати, какие ещё слои вам понадобились хоть раз?
Все, какие понадобились, и не раз, являются частью одного из слоёв MVC, о чём я и писал:
Каждый из этих слоёв (MVC) сам состоит из множества других слоёв приложения.
 

jonjonson

Охренеть
atv, в том то и дело, что MVC не лезет туда куда не нужно, а именно в реализацию модели, контроллера и представления. И потому в нём столько толку, сколько нужно для решения задачи общего разделения приложения на основные части. Он решает только одну из множества задач, но очень точно.

При этом он не решает главной задачи приложения, а именно реализации бизнес логики (ради которой пишется приложение). Её должны решать разработчики, используя или нет другие паттерны. И вообще, у каждого паттерна свои границы использования. И нет смысла ругать паттерн, если он применим только для определённой цели и не решает все задачи. Он не должен этого делать. Он создан для того, для чего создан и не более.

И понятие слой не связано только с паттерном MVC. Его можно применять в другом контексте для решения всё той же задачи управления сложностью. И эта задача существует на всех уровнях приложения.
 

atv

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