@NubasLol

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

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

Нужны конкретные доводы и желательно примеры.
  • Вопрос задан
  • 311 просмотров
Решения вопроса 3
@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
WebBasic CMS
Конечно, писать код в шаблонах не очень хорошая идея. Но обращаться к базе, почему нет? Вопрос реализации шаблона и уровня абстракции.
Например, так:
<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 и т.д.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Zelo Москва
от 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 70 000 руб.
АКМЭ сервис Санкт-Петербург
от 110 000 руб.
29 янв. 2020, в 01:16
500 руб./за проект
28 янв. 2020, в 21:42
5000 руб./за проект