• « bcompiler_write_constant
  • bcompiler_write_file »
  • PHP Manual
  • bcompiler Funções
  • Escreve na posição de início e continua até o fim do arquivo de tipo EXE

bcompiler_write_exe_footer

(PECL bcompiler >= 0.4)

bcompiler_write_exe_footer — Escreve na posição de início e continua até o fim do arquivo de tipo EXE

Descrição

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

Um arquivo EXE (ou auto executável) consiste de 3 partes,

  • O núcleo (código executável, ex.: um programa C compilado) que carrega o interpretador do PHP, a extensão do bcompiler, is Bytecodes guardados e inicia uma chamada para a função especificada (ex.: main) ou método da classe (ex.: main::main)
  • Os Bytecodes (descomprimidos apenas momentaneamente)
  • O rodapé do exe do bcompile

Para obter um núcleo adequado, você pode compilar php_embed-based stub phpe.c localizado no diretório examples/embed no CVS do bcompiler.

Parâmetros

filehandle

Handle de arquivo, como o retornado por fopen().

startpos

A posição do arquivo no qual os Bytecodes começam. Pode ser obtida usando ftell().

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Exemplos

Exemplo #1 Exemplo de uso de bcompiler_write_footer()

<?php

/* creating the output file (example.exe) */
$fh = fopen("example.exe", "w");

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

/* 2) writing bytecodes */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "myclass");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);

/* 3) writing EXE footer */
bcompiler_write_exe_footer($fh, $startpos);

/* closing the output file */
fclose($fh);
?>

Notas

Aviso

Esta função é EXPERIMENTAL. O comportamento, seu nome e documentação podem mudar sem aviso em futuras versões do PHP. Utilize por sua própria conta e risco.

Veja Também

  • bcompiler_write_header() - Escreve o cabeçalho do bcompiler
  • bcompiler_write_class() - Escreve uma classe definida como bytecode
  • bcompiler_write_footer() - Escreve o caracter \x00 para indicar o Fim dos dados compilados