Предположим, у вас есть один скрипт с небольшим количеством php-кода и множеством бинарных беспорядков.
<?php doStuff(); __halt_compliler(); [BIG_BINARY_MESS]
тогда вы хотите, чтобы компилятор НЕ пытался проанализировать двоичный файл, потому что если в двоичном файле есть <?
, он сломается.
Точка в состоянии отправить один файл с двоичными данными и кодом php.
Для небольшого примера смотрите это сообщение в блоге
Таким образом, вы хотите не только остановить execution
скрипта (как это сделал бы exit()
), но и остановить parsing
, чтобы вы могли иметь «недопустимый синтаксис» в конце файла и php по-прежнему мог выполняться первая часть.
Другой пример:
Это будет проанализировано как действительный php и выполнится просто отлично:
<?php $a = 1; echo $a; __halt_compiler(); §RW$FG$%ZDS$TSG$TSZ%U(); §$"§%"§$!!();
Для доступа к данным:
<?php
$file = fopen(__FILE__, 'rb');
// Go to the end of the __halt_compiler();
fseek($file, __COMPILER_HALT_OFFSET__);
echo stream_get_contents($file);
__halt_compiler(); §RW$FG$%ZDS$TSG$TSZ%U(); §$"§%"§$!!();
Это выдаст §RW$FG$%ZDS$TSG$TSZ%U(); §$"§%"§$!!();