@NubasLol

Почему плохо писать код в шаблонах?

Почему плохо писать php код в шаблонах, c хождением в бд и т.д?

Нужны конкретные доводы и желательно примеры.
  • Вопрос задан
  • 324 просмотра
Решения вопроса 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ну вот сломалась у тебя база данных. Ошибку выдаёт. Что будешь делать? Пол-шаблона то уже вывелось.

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

Именно поэтому вывод начинается только после того, как вся логика отработала и все данные получены.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во-первых это хорошо для здоровья, например коллеги не будут вас бить ногами по нежным местам.
Во-вторых - все что относится к формированию данных должно быть отделено от вывода, в идеале вынесено в модель, если завтра понадобится изменить модель, то никуда кроме места где описана модель лезть будет не нужно.
В-третьих - такова структура нормальных приложений, мухи отдельно - котлеты отдельно, это позволяет быстро и точечно менять любой отдельный независимый компонент.
Ответ написан
@sidni
Php Developer
Все познается на больших проектах,
в качестве примера возьмем методику MVC опенкарта где есть три слоя абстрации:
1) если это запрос то для этого есть модель
2) если это что-то из пхп кода то это контроллер
3) если это хтмл то это шаблон
Парни почистили от мусора код и "выкинули" в свет. Все просто красиво и самое главное бесплатно и без смс.
Но, а теперь взглянем почему же все ненавидят опенкарт. А потому что разработчиками не предусмотрены моменты как можно расширять и кастомизировать код, и все пишут свои кастомайзы там где и предусмотренно, в контроллере и когда владельцы сайта начинают баловаться модулями то оказывается схожие по функционалу модули пытаются внедрить одновременно свой код в одно и то же место одного и тогоже контроллера и начинается чихорда когда одни функции используют данные которые будут получены двумя строками ниже или два разных модуля добавили свои параметры в стандартную функцию.
многие умники догадались что можно весь треш перевести в шаблон где уже все данные получены, и контроллеры и шаблоны начинают разрастаться когда 3000-5000 строк в одном файле это норм и не такое видали, сайт начинает глючить, найти ошибку или добавить свой кастомайз становится просто невыносимым, я еще молчу про ocMod или vqMod (но это уже другая история)
итог 3 версия опенкарта использует twig темплейты, где нельзя так просто "ворваться" со своим php кодом, но и основных проблем не решила.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Digiport
@Digiport
PHP рулит
Конечно, писать код в шаблонах не очень хорошая идея. Но обращаться к базе, почему нет? Вопрос реализации шаблона и уровня абстракции.
Например, так:
<ul data-wb='{
   "role":"foreach",
   "from":"news",
   "where": {
         "active":"on",
         "author":"admin"
    }
   "limit":"10",
   "sort":"data:d"
}'>
<li>{{datetime}}: {{header}}<br>{{short_text}}</li>
</ul>
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
Все зависит от проекта и сложности бизнеслогики на нём и от уровня разработчиков. Я в бородатые годы экспериментировал с активными шаблонами, они отлично себя показывали на всяких блогах-визитках и городских порталах.
Приятно было под пивко за вечерок с клиентом собрать проект. А сейчас ERP системы, где только система прав доступа требует человекомесяц, интересно, но геморно, тут активные шаблоны не зайдёт, да и шаблонов в глаза не видел лет пять, rest api и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽