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