Имеет ли значение, если я помещаю кучу кода в один тег php против его разбивки? - PullRequest
1 голос
/ 04 июля 2011

Помимо личных предпочтений, это имеет какое-то значение?

<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strNum', true); 
  '' != $meta and print "$meta";
?>
<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strName', true); 
  '' != $meta and print "$meta";
?>

в отличие от этого

<?php
  $meta = get_post_meta(get_the_ID(), 'rw_strNum', true); 
  '' != $meta and print "$meta";

  $meta = get_post_meta(get_the_ID(), 'rw_strName', true); 
  '' != $meta and print "$meta";
?>

Ответы [ 4 ]

2 голосов
/ 04 июля 2011

Все, что за пределами <?php ?> обрабатывается как вывод. Это значит, что

?>
<?php

может выводить что-либо. «May», потому что символ новой строки после ?> является частью тега и поэтому не возвращается. Но с чем-то вроде

?>
  <?php

есть два пробела echo изд. Проблема в том, что вы не можете больше устанавливать заголовки после того, как что-то возвращается в браузер.

2 голосов
/ 04 июля 2011

Первая версия будет выводить дополнительный символ новой строки в сгенерированный вывод, так как есть один между ?> и <?php:

?>
<?php

Это единственная разница; между ними нет заметного влияния на производительность.

0 голосов
/ 04 июля 2011

Да, это имеет значение.Посмотрите на это:

<?php
$uselessvar = 1;
?>
<?php
header('Location: /'); // This will not work
?>

<?php
$uselessvar = 1;
header('Location: /'); // This will work
?>

В первом примере есть новая строка между первым закрывающим тегом ?> и вторым открывающим тегом <?php.Эта новая строка обрабатывается как вывод и отправляется клиенту.header Функция не может работать, если какой-либо вывод отправляется клиенту до его вызова.Вот почему первый пример не будет работать там, где будет работать второй.

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

0 голосов
/ 04 июля 2011

Как сказал Книттл, это не будет иметь никакого значения. Единственное отличие состоит в том, что он сделает ваш HTML легче для чтения, когда вы смешиваете PHP и HTML вместе, например, при выполнении шаблонов.

Парсер php просматривает весь файл независимо, и я сомневаюсь, что встречается закрывающий тег, а затем открывающий тег влияет на синтаксический анализ / скорость синтаксического анализа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...