• « bcompiler_write_constant
  • bcompiler_write_file »
  • PHP Manual
  • Fonctions bcompiler
  • Écrit à la position start et jusqu'à la fin du fichier de type exe

bcompiler_write_exe_footer

(PECL bcompiler >= 0.4)

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

Description

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

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

Une ressource de fichier retournée 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 ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec bcompiler_write_exe_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. Le comportement de cette fonction, son nom, et toute la documentation autour de cette fonction peut changer sans préavis dans une prochaine version de PHP. Cette fonction doit être utilisée à vos risques et périls.

Voir aussi

  • bcompiler_write_header() - Écrit l'en-tête bcompiler
  • bcompiler_write_class() - Écrit une classe définie en bytecode
  • bcompiler_write_footer() - Écrit le caractère \x00 pour indiquer la fin des données compilées