Вопрос может показаться очень глупым, в принципе так оно и есть, хочу понять некий фундамент. Рылся тут в шаблонизаторах, читал статьи и как было написано где то, что идут споры зло бизнес-логика в шаблонах или нет, правильно ли я понимаю что под бизнес-логикой подразумевается: Код (PHP): <div class="status_panel"> <? if ( is_user() ): ?> <div class="status_message">Вы зашли как [url="<?= get_user_link(); ?>"]<?= get_user_name(); ?>[/url]</div> <? else: ?> <div class="status_message">Вы гость!</div> <? endif; ?> </div> т.е. проверки, про что то более громоздкое я вообще молчу. и если да, то как обрабатывать подобные места (где надо вывести кусок HTML) без бизнес-логики в шаблонах?
Бизнес-логика - это скорее различные обработки, выборки данных и прочее. Проще говоря, если ты хреначишь запрос в шаблоне, то это не гуд, а если пользуешься набором функций/методов предназначенных для шаблона, то все нормально. В данном случае все логично, ты меняешь вывод в зависимости от состояния (пользователь/гость). имхо )
Код во вьюхе - это логика вывода. Это ок. Прежде чем чураться чего-то, или что-то восхвалять, нужно понять природу чурания. Иначе можно стать овечкой из стада, которое орет "%нужно_вписать% - зло, руки оторвать!", причем единственным аргументом орать это у каждого в стаде является тот факт, что "все остальные тоже это орут, значит это правда". И начинаются танцы с бубнами. Извраты и костыли. Велосипеды и анальные бубны все, что угодно, лишь бы ни строчки php не попало в шаблон. Ведь стадо орет, а значит право. А на деле все несколько проще. Пихай код куда угодно. Какой угодно. Главное, чтобы он не противоречил логике. Например открываю я чужой проект, ну или свой после полугода перерыва, и вот нужно мне, как Ромач заметил, какой-то запрос пофиксить. Я прикидываю, что запрос такого-то модуля должен лежать где-то в его файлах. Захожу в папку, ага, эт, значит, конфиги, эт, значит вьюха, эт, значит какие-то классы его вынесены, о, вот, исполнительный файлик, который это юзает. Захожу, нахожу что нужно. В этом логика - я вижу файлик, который, судя по названию, конфиг, и сразу его отсекаю, потому что там не может быть никакой логики, этож конфиг, там какие-то переменные. Вьюху тоже отсек, если там и есть какой-то код, то он точно не отвечает за формирование данных. Он отвечает за их вывод, форматирование, обработку, что угодно, но не за формирование. В файлах с классами тоже нет ничего, это просто классы, которые вне контекста не имеют никакого смысла. А теперь прикинь, залезаешь ты в другой проект. И тоже что-то ищешь. По той же схеме, собсно, но не находишь. Потому что запросы в шаблонах. А работа с файлами почему-то в конфигах. И тд и тп. Главное - руководствоваться здравым смыслом. А не воплями незнакомых людей.
Те, кто кричат, что php не должно быть в шаблонах, считают, что шаблоны будут писать верстальщики. Верстальщики чистый html делают, а в свой код я уже сам встрою это. Вот я сейчас на Yii2 начинаю работать, и там во шаблонах вообще постоянно что-то вроде: Код (PHP): <?=ListView::widget([ "dataProvider" => $posts, "itemView" => "__post", "summary" => false, "pager" => [ "options" => [ "id" => "pager" ], "linkOptions" => [ "class"=> "pagernumber" ], "prevPageLabel" => "<span class=\"bodyicon\"></span>", "nextPageLabel" => "<span class=\"bodyicon\"></span>", ] ]); ?> Верстальщик не поймёт, а мне удобно.
Верстальщикопроблемы же. HTML - самое простое, с чем мне когда-либо вообще приходилось сталкиваться. Хз за что им вообще деньги платят. Не можешь в современность? Ноешь, что в шаблонах появляется код? Жалуешься, что в 90е, когда странички были статичные, мир был лучше? Думаешь, что программисты должны костылить и прогибаться под тебя? Вон из профессии, ты неконкурентоспособен. Вот и вся любовь
разделение труда, в офисах сами сотрудники тоже могут мыть пол, но не моют же. Добавлено спустя 15 секунд: Спасибо за разъяснения.
Не, ну мне нравится работать с верстальщиками, поскольку, хотя я и умею вёрстку делать, для меня это всегда очень скучно, и поэтому я долго вожусь. Но мне от них не нужно готового шаблона под мою систему, расставить в их html нужные вызовы php-а для меня не проблема