bcompiler_write_exe_footer

(PECL bcompiler:0.4-0.8)

bcompiler_write_exe_footer — Écrit à la position start et jusqu'à la fin du fichier de type exe

Description

bool bcompiler_write_exe_footer ( resource $filehandle, int $startpos )

Un fichier exe (ou auto-exécutable) est composé de trois parties :
Le stub (le programme compilé) qui charge PHP et l'extension bcompiler, stocke le bytecode et initialise un appel à la fonction spécifique (e.g. main) ou une méthode d'une classe (i.e. main::main )
Le bytecode (uniquement décompressé pour le moment)
Le footer EXE bcompiler

Pour obtenir un stub approprié, vous pouvez compiler le stub php_embed-based phpe.c qui se trouve dans le dossier examples/embed sur le CVS de bcompiler.

Liste de paramètres

filehandle

Un gestionnaire de fichiers, retourné par la fonction fopen() .

startpos

La position dans le fichier à partir duquel commence le bytecode, et pouvant être obtenu en utilisant la fonction ftell() .

Valeurs de retour

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemples

Exemple 495. Exemple avec bcompiler_write_footer()

<?php

/* Création du fichier de sortie (example.exe) */
$fh  fopen ( "example.exe" "w" );

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

/* 2) Écriture du bytecode */
bcompiler_write_header ( $fh );
bcompiler_write_class ( $fh "myclass" );
bcompiler_write_function ( $fh "main" );
bcompiler_write_footer ( $fh );

/* 3) Écriture du footer EXE */
bcompiler_write_exe_footer ( $fh $startpos );

/* Fermeture du fichier de sortie */
fclose ( $fh );
?>

Notes

AVERTISSEMENT

Cette fonction est EXPERIMENTALE . Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi

bcompiler_write_header()
bcompiler_write_class()
bcompiler_write_footer()