• « bcompiler_write_constant
  • bcompiler_write_file »
  • PHP Manual
  • Функции bcompiler
  • Записывает позицию начала байткода и терминирующий символ в конец файла

bcompiler_write_exe_footer

(PECL bcompiler >= 0.4)

bcompiler_write_exe_footer — Записывает позицию начала байткода и терминирующий символ в конец файла

Описание

bcompiler_write_exe_footer ( resource $filehandle , int $startpos ) : bool

EXE-файл (исполняемый) состоит из трех частей:

  • stub - исполняемый код, т.е. скомпилированная программа на C, который загружает интерпритатор PHP, расширение bcompiler, сохраненный байткод и инициирует вызов необходимых функций (например main) или методов (например main::main)
  • Байткод (несжатый только на данный момент)
  • "Подвал" EXE-файла

Для получения необходимого исполняемого кода вам надо скомпилировать встраиваемую версию phpe.c, расположенную в директории examples/embed в дереве исходных кодов bcompiler.

Список параметров

filehandle

Файловый дескриптор, полученный из fopen().

startpos

Позиция в файле, с которой начинается байткод. Может быть получена с помощью ftell().

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования bcompiler_write_exe_footer()

<?php

/* создаем файл (example.exe) */
$fh = fopen("example.exe", "w");

/* 1) записываем исполняемый код (phpe.exe) */
$size = filesize("phpe.exe");
$fr = fopen("phpe.exe", "r");
fwrite($fh, fread($fr, $size), $size);
$startpos = ftell($fh);

/* 2) записываем байткод */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "myclass");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);

/* 3) записываем "подвал" EXE-файл */
bcompiler_write_exe_footer($fh, $startpos);

/* закрываем файл */
fclose($fh);
?>

Примечания

Внимание

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

Смотрите также

  • bcompiler_write_header() - Записать заголовок файла bcompiler
  • bcompiler_write_class() - Записывает байткод класса в файл
  • bcompiler_write_footer() - Записывает символ \x00 обозначающий конец скомпилированных данных