![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| razerxxx |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.3.2011 Репутация: нет Всего: нет |
Возникли тут разногласия с коллегой.
Ситуация такая. Имеется класс комментариев. У класса есть метод fillTemplate($object_id) - который отдает готовый скомпилированный шаблон(список комментариев плюс форма добавления и пагинация). Я вызываю его так: в контроллере в шаблон передаю экземпляр класса
в шаблоне вызываю
, где object_id - привязка комментариев к объекту. Коллега считает, что это вкорне неверный путь, и нужно формировать данные в контроллере или в модели, а в шаблон передавать уже сформированный код.. т. е. например если данные сформированы в модели то вывод бы производился так:
- то есть данные уже полученны на строне модели примерно так:
В моем случае, как я считаю, структура получается более гибкой, модель объекта ничего не знает о комментариях, комментариями полностью занимается отдельный класс. Минус же подхода, в том что проникает логика в представление, в чем собственно у нас и спор. Подобный подход, как я понял используется в LiveStreet - занимался версткой шаблона для него, и там это увидел. Мне показалось это довольно удобным. При верстке не надо лезть в php если нужно получить например картинку пользователя. Там это было примерно так $user->getUserAvatar(100); Кто что думает по этому поводу... |
||||||||
|
|||||||||
| Nigel |
|
|||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
А теперь представьте, что Вам сказали изменить шаблон либо отдавать данные другого формата (xml, json). Что Вы будете делать? Полезете в темплейты и будете искать там строчки вида
$user->getUserAvatar(100); чтобы вставить их в новый файлик. Нарушается принцип mvc, дело, конечно, сугубо личное, следовать ему или нет. Если все же придерживаетесь этого принципа, то тогда всю логику следует выносить в модель. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Можно делатькак угодно, но с точки зрения MVC
Правильней как вам сказали
|
|||
|
||||
| razerxxx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.3.2011 Репутация: нет Всего: нет |
Как раз таки семинть шаблон тут будет даже легче... В крайнем случае есть метод $comments->getComments($id) который как раз возвратит массив сообщений, и можно уже формировать шаблон как угодно.... А отдавать данные другого формата? хм.. не вижу проблемы, можно дописать метод getXmlData() - и заменить на него.. |
|||
|
||||
| Nigel |
|
|||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
Ну, попробуйте. Когда будет пара тысяч файлов, сообщите сколько времени заняло поменять одну функцию на другую.
|
|||
|
||||
| razerxxx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.3.2011 Репутация: нет Всего: нет |
Не совсем понимаю что вы хотите сказать. Если будет несколько тысяч файлов, это не будет иметь значения - шаблон для комментов один, и он расположен в одном месте, изменить его в любом случае не составит проблемы. При чем от подхода это даже независит. Или может я не совсем понял что вы имели ввиду... |
|||
|
||||
| Nigel |
|
|||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
У вас ведь для каждой сущности свой метод рендеринга, который к тому же выполняет в нагрузку еще некую логику. Комментарии это ведь не единственное, что может быть на сайте, следовательно таких функций будет много. Когда же возникнет необходимость сменить шаблон, скажем, для мобильной версии, то придется написаться еще n функций по штуке на каждую сущность и поддерживать еще их. Причем код будет дублироваться. С изменением логики приложения столкнетесь с необходимостью рефакторинга всего этого добра.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |