Как правильно писать php вставки в tpl файлах?

Смотрю уроки по php, но смущает некий код, вроде этого:
(Для наглядности распишу по подробнее)
<?php if (isset($hornav)) { ?>
  <div class="main">
    <?=$hornav?>
<?php } ?>
<?php if ($header) { ?><h1><?=$header?></h1><?php } ?>

Стоит ли объединить идущий подряд код на php, а так же заменить "<?=" на "<?php echo"?
  • Вопрос задан
  • 5227 просмотров
Решения вопроса 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
Код выше вполне нормальный. Последние две строчки можно объединить, на работе скрипта это не скажется. Но тут есть один момент. Шаблон - это обычно html-текст, и php-инструкции в нём чужеродные (с точки зрения html), и даже расширения таких файлов обычно делают не .php, а .phtml - чтобы подчеркнуть, что это не php-скрипт с кодом. Поэтому в таких случаях используют специальный формат записи php-инструкций, причём обычно пытаются одну команду расположить в одну строчку, и не смешивать php и html в одной строчке. С этой точки зрения лучше не объединять эти две строчки в одну инструкцию php.
Я обычно не пишу скобки, как в коде выше, я использую второй вариант открытия и закрытия блоков, без фигурных скобок:
<div id="container">
<?php if ($count>0): ?>
    <?php foreach($items as $item): ?>
        <div class="item"><?=$item?></div>
    <?php endforeach ?>
<?php endif ?>
</div>

Но лучше поиграйтесь с этим вариантом и переходите на внешний шаблонизатор, например Twig. (вот есть урок по его встраиванию в сайт без фреймворка)
Ответ написан
zooks
@zooks
Frontend
Короткую запись
<?=$hornav?>
желательно заменить на:
<?php echo $hornav; ?>

?>
<?php

Можно объединить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
<?php - делается как стандарт для решений предназначенных для всех. Потому что работает всегда и везде. Вордресс настаивает на этих тегах но меня они бесят)

Сокращенные <? ?> могут вызывать у некоторых серверов проблемы. Не включена поддержка в php.ini. К тому же они совпадают в некоторых случаях с тегами в xml.

C <?= тоже самое.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Беда нашего многострадального языка в том, что на одного специалиста-практика приходится десяток мартышек-теоретиков, которые ни разу в жизни не сталкивались лично с обсуждаемой проблемой, но всегда рады с умным видом излить на окружающих потоки почерпнутой в интернетах мудрости.

Единственный нормальный ответ здесь - от lexxpavlov, с которым я могу только согласиться по всем пунктам:
- Oбъединять РНР операторы нельзя. Это нарушает сематическую корректность шаблона. Вместо простого и легко формализуемого синтаксиса мы получаем кашу.
- Заменять ?= на php echo не нужно - это абсолютно бессмысленная трата символов.
- поигравшись с native php следует перейти на twig, в котором одни только наследование и автоискейпинг заменят тонну говнокода на нативном пхп.

Остальные же ответы здесь - воспалённые фантазии, не имеющие никакого отношения к реальности. Никаких проблем <?= тег не создаёт.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы