Как использовать bcompiler и магическую константу __FILE__ - PullRequest
0 голосов
/ 27 июля 2010

Я пытаюсь скомпилировать некоторые части 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__, но все же позволяют мне ссылаться на пути относительно данного исходного файла?

1 Ответ

1 голос
/ 06 апреля 2011

Вы видите проблему, которая уже исправлена, см. http://pecl.php.net/bugs/bug.php?id=5693

...