Xwab
Форумыnavigate_nextПрограммирование на PHP

Model-Theme-Controller?
Сообщения
wapmorgan

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

В данной схеме у каждой темы есть свой макет и свои специальные методы для отрисовки различных частей страницы. Встаёт проблема: сколько типов элементов нужно сделать, чтобы можно было вывести весь контент сайта? Я пока сам это слабо представляю. К примеру, я сам пока что сделал только вывод сообщений. Вот пример реальной страницы сайта - http://pastebin.com/GkFsLHNv, а вот отрисовка - http://pastebin.com/PxDWNvNF. Меняя лишь тему, я могу получить http://wma2.wen.ru/wap/ или же http://wma2.wen.ru/web/. На дизайны не смотрим. Мне самому стыдновато.

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

А теперь к вопросам. Кто-то ведь уже такое велосипедил? Есть ли право на жизнь?

03 Янв 2013, 23:00
Popelis

wapmorgan пишет:
"В данной схеме у каждой темы есть свой макет и свои специальные методы для отрисовки различных частей страницы."


Бред. Смотрю я на твои жалкие потуги и возникает вопрос: Че ты фреймворки-то не изучаешь?
Поюзай, сделай проектик, погляди, как все устроено.
Шаблонные / нешаблонные страницы ему...

03 Янв 2013, 23:08
SL_NeKrOmAnT

Тоже считаю бред. Чего ты этим добьешься?)
Громоздкий код какой-то

03 Янв 2013, 23:15
wapmorgan

Popelis, дык я писал на yii уже. Там мне и надоели view'ы.

03 Янв 2013, 23:16
Popelis

wapmorgan, вот честно, я, раньше городил мега движки, с шаблонизаторами, даже тот же смарти знал хорошо.
У меня было чуть ли не 300 килобайт кода моего "ядра", от которого толка не было никакого.
А потом год юзал Yii, как-то раз пробовал Code Igniter и Кохану и зенд.
После фреймворков приходит понимание того, что когда в каких ситуациях использовать.
Даже понимание того, нужно ли юзать здесь фреймворк или нет.
Короче, раньше у меня было 300 предположим киловайт какого-то левого безполеного кода.
И как-то раз потребовалось написать загруз-центр.
Фреймворк решил не юзать.
Написал сам простейшую систему, модель-контролер-вид.
С нативным шаблонизатором, то есть с чистым пыхом.
И все отлично выполняло нужные функции и все "ядро" было в 4 килобайта весом.
С использованием фреймворков приходит понимание, что твоя главня И ЕДИНСТВЕННАЯ цель - написать программу, выполняющие нужные требования и желательно быстро написать.
Разработка ускоряется в десятки раз.
Просто приходит понимание, что все зависит от обстоятельств и нет смысла что-то там городить и велосипедить

03 Янв 2013, 23:21
SL_NeKrOmAnT

Истина  Полностью соглашусь.
wapmorgan, ты на этом что выигрываешь ?
добавлено спустя 15 секунд:
Скорость? врятли

03 Янв 2013, 23:23
wapmorgan

Ока, пойду дальше в салате лежать.

03 Янв 2013, 23:31
Akdmeh

Позволь вставить 5 копеек.
Зря вы так парни набросились. В принципе, он сам знает фреймворки и парадигму MVC, но экспериментирует, и в этом обвинять нечего.

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

Если не против - открой тему и хотелось бы еще посмотреть толком, как выглядит сам код темы, а то не до конца все понял, да и еще обсудить чего. Не хочешь - судить не буду)


На будущее: работодателя не интересует, как хорошо ты умеешь писать на своих велосипедах, пусть ты 100 раз знаешь MVC и OOP. Его интересует, насколько быстро ты сможешь приступить к написанию готового кода на Yii, Zend или Symphony. И если реального глубокого опыта в этих фреймворках нету - то работы тебе не найти.
Может ты пока ее и не ищешь, а вот для меня сейчас это стало реальной проблемой, по которой мне пришлось отказаться от любых написаний велосипедов (ну и не только поэтому, но причина немаловажная)

P.P.S. В Yii ведь есть layouts, случаем не похоже на то, что тебе нужно?

04 Янв 2013, 9:57
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.