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);
test.php:
<?php
require('/tmp/pants/outfile.php');
test.php を実行した結果は/tmp/trousers
、/tmp/pants
. これは、バイトコードのコンパイル段階で、バイトコードを出力ファイルに書き込む前にマジック定数がそれぞれの値に変換されるためだと推測していますが、これにより、魔法の定数が常に場所に関連付けられている場合、有用なものにマジック定数を使用する能力が大幅に制限されます。入力ファイルの。
現在のソース ファイルの名前を取得する他の方法はありますか? __FILE__ の必要性を軽減しながら、特定のソース ファイルに関連するパスを参照できるようにする他の手法はありますか?