我正在尝试将 PHP 应用程序的一些位编译成字节码。该代码使用了魔术常量__FILE__。
infile.php:
<?php
echo dirname(__FILE__);
挤压.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);
测试.php:
<?php
require('/tmp/pants/outfile.php');
运行 test.php 的输出是/tmp/trousers
而不是/tmp/pants
. 我猜这是因为字节码编译阶段在将字节码写入输出文件之前将魔术常量转换为它们各自的值,但这严重限制了我将魔术常量用于任何有用的能力,如果它们总是与位置相关联的输入文件。
还有其他方法可以检索当前源文件的名称吗?是否有任何其他技术可以减轻对 __FILE__ 的需求,但仍允许我引用相对于给定源文件的路径?