• « bcompiler_write_constant
  • bcompiler_write_file »
  • PHP Manual
  • Funciones de bcompiler
  • Escribe la posición de inicio y la firma al final de un archivo de tipo exe

bcompiler_write_exe_footer

(PECL bcompiler >= 0.4)

bcompiler_write_exe_footer — Escribe la posición de inicio y la firma al final de un archivo de tipo exe

Descripción

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

Un archivo EXE (o auto-ejecutable) consiste en 3 partes:

  • El stub (código ejecutable, p.ej. un programa compilado en C) que carga el intérprete de PHP, la extensión de bcompiler, el Códogo de Bytes almacenado e inicia una llamada a la función (p.ej. main) o método de clase (p.ej. main::main) especificados.
  • El Código de Bytes (sin comprimir sólo por el momento)
  • El pie EXE de bcompiler

Para obtener un stub apropiado se puede compilar el stub basado en php embebido phpe.c ubicado en el directorio examples/embed del CVS de bcompiler.

Parámetros

filehandle

Un gestor de archivo como el devuelto por fopen().

startpos

La posición del archivo en la que comienza el Código De Bytes, y se puede obtener usando ftell().

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de bcompiler_write_exe_footer()

<?php

/* crear el archivo de salida (ejemplo.exe) */
$fh = fopen("ejemplo.exe", "w");

/* 1) escribir un stub (phpe.exe) */
$size = filesize("phpe.exe");
$fr = fopen("phpe.exe", "r");
fwrite($fh, fread($fr, $size), $size);
$startpos = ftell($fh);

/* 2) escribir el código de bytes */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "miclase");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);

/* 3) escribir el pie del EXE */
bcompiler_write_exe_footer($fh, $startpos);

/* cerrar el archivo de salida */
fclose($fh);
?>

Notas

Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Ver también

  • bcompiler_write_header() - Escribe la cabecera de bcompiler
  • bcompiler_write_class() - Escribe una clase definida como código de bytes
  • bcompiler_write_footer() - Escribe el carácter \x00 para indicar el Final de los datos compilados