Закрытие тега PHP – когда это необходимо?

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

Закрывающий тег необходим, если вы хотите переключиться с блока кода PHP на простой текстовый вывод.

Вот пример:

<?php // PHP code block ?> <!-- plain text output and not processed by PHP --> </body> 

BTW, если вы хотите узнать, какую ошибку вы предотвращаете, пропустив закрывающий тег. Поскольку объяснение Зенда не входит в детали.

Он не требуется PHP, и его исключение предотвращает случайное впрыскивание пробега в пробе.

Это означает, что если вы хотите использовать header () для перенаправления какого-либо человека в другое место или каким-либо образом изменить HTTP-заголовок … тогда вы не сможете и получите ошибку, если какой-то файл закончится так.

 } ?> //space here 

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

Это мое личное «правило»:

  • Файл только с php-кодом: никогда не заканчивать тег
  • Файл с php, смешанным с чем-то другим (т.е. HTML): всегда заканчивать тег

Это необходимо только тогда, когда вы хотите вывести не-php-код после вашего php-блока.

Когда вы не просто используете PHP в скрипте 🙂

Как правило, я всегда добавляю закрывающий тег, потому что это единственный раз в течение всего дня, когда мой палец вопросительного знака получает упражнение. Этот плохой вопросительный знак не вызывает любви на PHP 😉

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