?> не обязательный

Для опытных прогеров это уже еще тот баян, но очень хочется верить, что этот пост (или аналогичный где-нить в другом месте) прочитает человек, чей код мне придется когда-нибудь сопровождать :) ) Это как "Ложки нет" в матрице - мегаоткровение жизни:

Закрывающий тег ?> в php-файлах не обязательный

Это значит, что файл:

<?php echo 'Hello, World!';

отработает отлично и выведет все что надо. Что удивительно - так это то, что в Зендовских соглашениях по коду это было написано и очень давно.

Однако до сих пор многие этим не пользуются, закрывают каждый файл "?>" и ловят вот такой вот классный варнинг:

Cannot add header information - headers already sent

который, если вывод варнингов не выключен - ложит нафиг все куки, аякс, кодировку и др. хедеры. Грабли стары как мир - а все из-за того, что кто-то по ошибке или по недосмотру поставил пробел или символ перевода строки после закрывающего тега php. Последний, как известно, работает в 2-х режимах - все что внутри <?php и ?> обрабатывается как код, а все что вне (да, да - и как раз наши пробелы и \n) - тупо выплевывается в исходящий поток как html-контент. Ну а если контент отправлен - то хереды уже никак не отправятся; пробел, перед xml-ником (скажем rss) сделает его невалидным и т.п.

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

С точки же зрения производительности, не закрывать php-файлы - круто, потом что как только интерпретатор натыкается на "?>" он переходит в режим выплевывания контента - ну а потом понятное дело, ему приходиться делать это обратно. Поэтому, закрытый тег заставляет его постоянно дергаться меняя режимы, что само по себе сакс - потому что замедляет время обработки страницы.

Так что - смело делаем ?> и радуемся жизни :)

  • http://www.diablog.ru Yurem

    Хе)))
    Предполагаю откуда пришла мысля написать сей «важный баян»))))

  • http://php.su woo

    Автор, ты лузер
    учись нормально кодить и будет тебе счастье

    а те криворукие дибилы, которые ставят пробелы после ?> – могут идти лесом.
    писать надо с умом и тогда проблем не будет…

    php.su – приходи и учись если нормальные результаты нужны

  • Asd

    Спасибо


Информеры с тИЦ и PR: получить код для сайта