J'essaie de compiler quelques bits d'une application PHP en bytecode. Le code utilise la constante magique __FILE__.Comment utiliser bcompiler et la constante magique __FILE__
infile.php:
<?php
echo dirname(__FILE__);
squish.php:
<?php
$h = fopen('/tmp/pants/outfile.php', 'w');
bcompiler_write_header($h);
bcompiler_write_file($h, '/tmp/trousers/infile.php');
bcompiler_write_footer($h);
fclose($h);
test.php:
<?php
require('/tmp/pants/outfile.php');
La sortie du test.php est en cours d'exécution /tmp/trousers
plutôt que /tmp/pants
. Je suppose que c'est parce que la phase de compilation du bytecode traduit les constantes magiques à leurs valeurs respectives avant d'écrire le bytecode dans le fichier de sortie, cependant cela limite sérieusement ma capacité à utiliser les constantes magiques pour tout ce qui est utile. du fichier d'entrée.
Existe-t-il d'autres moyens de récupérer le nom du fichier source actuel? Y a-t-il d'autres techniques qui pourraient atténuer le besoin de __FILE__ mais qui me permettent quand même de faire référence à des chemins relatifs à un fichier source donné?
Merci pour le heads up. Depuis, j'ai bel et bien abandonné bcompiler car je n'arrivais pas à le faire fonctionner avec un ensemble raisonnablement simple de classes PHP sur Ubuntu 10.04 ou 10.10 avec la dernière beta de PECL ou la dernière SVN. Il a continué à me donner des erreurs de méthode non trouvées pour les classes qui ont étendu d'autres classes. – Shabbyrobe