8.6 Compilateur bytecode pour PHP
8 Référence des fonctions
Manuel PHP
. Introduction . Installation . Contact . bcompiler_load_exe . bcompiler_load . bcompiler_parse_class . bcompiler_read . bcompiler_write_class . bcompiler_write_constant ->bcompiler_write_exe_footer . bcompiler_write_file . bcompiler_write_footer . bcompiler_write_function . bcompiler_write_functions_from_file . bcompiler_write_header
|
8.6.10 bcompiler_write_exe_footer()
Ecrit à la position start et jusqu'à la fin du fichier de type exe
[ Exemples avec bcompiler_write_exe_footer ] PECL
bool
bcompiler_write_exe_footer (
resource
filehandle
,
int
startpos
)
| Attention | |
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.
|
Un fichier exe (ou auto-exécutable) est composé de trois parties :
- Le
stub
(code exécutable, e.g. programme C compilé)
qui charge l'interpréteur PHP, 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
Le paramètre
startpos
est la position à laquelle
le bytecode commence et peut être obtenue en utilisant
ftell($fh)
.
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.
| Exemple avec bcompiler_write_footer |
<?php /* Création du fichier de sortie (example.exe) */ $fh = fopen("example.exe", "w"); /* 1) Ecriture d'un stub (phpe.exe) */ $size = filesize("phpe.exe"); $fr = fopen("phpe.exe", "r"); fwrite($fh, fread($fr, $size), $size); $startpos = ftell($fh); /* 2) Ecriture du bytecode */ bcompiler_write_header($fh); bcompiler_write_class($fh, "myclass"); bcompiler_write_function($fh, "main"); bcompiler_write_footer($fh); /* 3) Ecriture du footer EXE */ bcompiler_write_exe_footer($fh, $startpos); /* Fermeture du fichier de sortie */ fclose($fh); ?>
|
Voir aussi
bcompiler_write_header
,
bcompiler_write_class
et
bcompiler_write_footer
.
|