Пишу, по большей части, про историю, свою жизнь и немного про программирование.

PHP: compliler_halt_offset

Малоизвестная возможность PHP, появившаяся с версии 5.1 — аналог секции DOC из Perl. Позволяет создать специальную текстовую секцию в конце файла скрипта, откуда можно будет читать данные, например, туда можно поместить страницу помощи к программе или какие-то метаданные.

Секция начинается вызовом специальной конструкции __halt_compiler(), всё, что дальше этой строки интерпретатор не считывает и не выполняет. Смещение, по которому начинаются данные за конструкцией, доступно через константу __COMPILER_HALT_OFFSET__. Почему нельзя было сделать константу, указывающую на файловый ресурс (по аналогии с STDERR) для меня загадка.

Использовать можно, например, так:

echo file_get_contents(__FILE__, null, null, __COMPILER_HALT_OFFSET__);

// the end of the script execution
__halt_compiler();Hello, world!

На печать программа выведет строку «Hello, world!».

4 комментария
david-m.livejournal.com 2008

Спасибо. О сколько нам открытий чудных.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для david-m.livejournal.com:

На деле всё просто: один раз читается дока (полностью), потом changelog’и. И чувство «где-то я это видел» не позволит изобретать велосипеды.

david-m.livejournal.com 2008

Я регулярно срубаюсь уже на первом пункте списка. Это «неописуемо», как говорила та собака при виде баобаба…

Евгений Степанищев (bolknote.ru) 2008

Комментарий для david-m.livejournal.com:

Это ж совсем не сложно, открыть и прочитать :)