bcompiler_write_exe_footer

(PECL)

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

Descrição

bool bcompiler_write_exe_footer ( resource filehandle, int startpos )

Atenção

Esta função é EXPERIMENTAL. Isso quer dizer que o comportamento desta função e seu nome, incluindo TUDO o que está documentado aqui pode mudar em futuras versões do PHP, SEM QUALQUER NOTIFICAÇÃO. Esteja avisado, e use esta função por sua própria conta e risco.

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, extensão do bcompiler, Bytecodes guardados e inicia uma chamada para a função especificada (ex.: main) ou método da classe (ex.: main::main)
Os bytecodes compactados pelo Bzip
O rodapé do exe do bcompiler

O parâmetro startpos é a posição do arquivo na qual os Bytecodes começam, e pode ser obtido usando ftell($fh).

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.

Exemplo 1. Exemplo de bcompiler_write_footer()

<?php
/* cria o arquivo de saída (exemplo.exe) */
$fh = fopen("example.exe", "w");
/* 1) escreve o núcleo (phpe.exe) */
$size = filesize("phpe.exe");
$fr = fopen("phpe.exe", "r");
fwrite($fh, fread($fr, $size), $size);
$startpos = ftell($fh);
/* 2) escrevendo bytecodes */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "myclass");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);
/* 3) escrevendo rodapé do executável */
bcompiler_write_exe_footer($fh, $startpos);
/* fecha arquivo de saída */
fclose($fh);
?>

Veja também bcompiler_write_header(), bcompiler_write_class(), e bcompiler_write_footer().