Тяжелое использование тега PHP <? Php "

Некоторые PHP-коды, на которые я смотрю, усеяны словами "<? php" и "? > " теги в зависимости от того, выводит ли он HTML или нет. Есть ли какое-то преимущество в производительности, а не использование эха для написания HTML? Это делает код чрезвычайно трудным для чтения, когда код постоянно переключается между кодом и HTML через тег <? Php.

Обратите внимание, что я не просто говорю о случайном переключении. Код, который я сейчас просматриваю (исходный код mantis-bt), дает мне головную боль с количеством переходов. Очень очень трудно читать. Мне интересно, есть ли у них причина для этого так?

Ответ 1

Что касается читаемости, я бы предпочел:

  <ul>
      <?php foreach ($items as $item): ?>
          <li>
              <a href="<?php esc($item->url)?>">
              <img src="<?php esc($item->icon)?>"/>
              <?php esc($item->text)?>
          </li>
      <?php endforeach; ?>
  </ul>

чем:

   echo "<ul>";
   foreach ($items as $item)
   {
     echo "<li>";
     echo '<a href="'.esc($item->url).'">';
     echo '<img src="'.esc($item->icon).'"/>';
     echo esc($item->text);
     echo '</li>';
   }
   echo "</ul>";

Не только это, но последнее позволяет вашей IDE выбора обрабатывать синтаксис и форматирование HTML (например, сообщать вам, что </a> отсутствует). Таким образом, если между короткими битами HTML не будет более много, <?php может быть предпочтительнее.

EDIT:, так как для производительности любой, кто серьезно относится к скорости кода, активирует предварительный компилятор кэширования, который сварит обе версии до той же самой вещи.

Ответ 2

Никакой причины, кроме его начинающих сценариев, просто пытается получить результаты на странице без какого-либо архитектурного мышления или планирования в систему в долгосрочной перспективе.

Что вы должны делать, так это расщепление вашего дизайна от вашего логического php-кода, а компиляция проекта должна быть выполнена в конце выполнения сценариев.

если вы перепроектируете приложение, я бы посоветовал вам начать работу с фреймворком, потому что структура заставит вредные привычки продиктовать его дизайн.

Начните с codeigniter и создайте простой блог, поймите, как подключиться/вставить/выбрать/обновить базу данных, узнать, как обрабатывать сеансы, изучать контроллеры и принципы их создания.

После того, как у вас была приличная игра, начинайте смотреть на плохо закодированное приложение издалека, не глядя на код или дизайн, но все же, что именно он делает, это получение результатов из базы данных, есть ли у него пользовательская система и т.д.

затем начните реализацию базового уровня приложения, такого как выше, как только вы создадите базу данных, вы можете приступить к созданию моделей для извлечения из базы данных в точке вашего приложения, приступить к созданию базовых файлов вида с помощью < сильные > образцы из закодированного приложения и перекодировки в новом приложении, имея в виду структуру и чистоту кодирования.

Надеюсь, это поможет вам начать миграцию, потому что я, конечно, не советую вам продолжать работать с таким приложением.


@mitch

Событие показало, что вторая часть кода более чистая, и все еще сочетает ваше представление с остальной частью приложения, где это должно быть так:

<html>
    <?php $this->load("segments/head"); ?>
    <body>
         <?php echo $this->wrap("span",$this->link("Some Linke",$this->var("homepage"))) ?>
    </body>
</html>

выделенный набор методов для представления, чтобы он не взаимодействовал с основной логикой, это было бы обернуто внутри объекта, чтобы предотвратить область видимости, и только объект должен иметь доступ к основной логике.   

Ответ 3

Причиной может быть ситуация, подобная ситуации:

<?php if($logged_in) { ?>
    <span class="x">Welcome, <?= $_SESSION['user'] ?></span>
    <a href="logout.php">Logout</a>
<?php } ?>

Вместо:

<?php 
   if($logged_in) {
      echo "<span class=\"x\">Welcome, " . $_SESSION['user'] . "</span>";
      echo "<a href=\"logout.php\">Lougout</a>";
   }
?>

Есть меньше символов escape, о которых можно беспокоиться.

Ответ 4

В то время как это не создавало каких-либо заметных эффектов в отношении времени выполнения кода, идея о том, что это единственное место, которое должна быть рассчитана "Производительность", смехотворна. Разработчики стоят денег. Таким образом, очистка всего этого - повышение производительности! Ваша собственная производительность!

Так и сделай.

Ответ 5

PHP предлагает некоторые функции, которые не предлагаются HTML, например, циклы. Таким образом, если вам нужно использовать несколько циклов в вашем коде, вам нужно продолжать переключение между php-тегами и HTML. Кроме того, PHP помогает вам реализовать контроль сеанса, который не допускается HTML. Таким образом, важно внедрить PHP в HTML

Вкратце, чтобы использовать дополнительные функции, мы должны использовать PHP или какой-либо другой язык

Ответ 6

У меня нет статистических данных, чтобы поддержать это, но я понимаю, что более эффективно "выключать" php для вывода HTML, а не использовать echo "; Причина в том, что при запуске html через эхо-теги у вас есть PHP-анализ, чтобы отображать его, а просто вставлять его в сам документ, чтобы браузер отображал его БЕЗ необходимости иметь PHP, анализируя его.

Когда я создал ColdFusion, я помню, как слышал тот же случай, что и для тегов.

Ответ 7

Я предпочитаю использовать <?php и ?>, потому что легче читать HTML, но если любой потери производительности будет очень мало. Я написал HTML с echo, но очень плохо читать и находить проблемы в HTML.