Мне нужен инструмент, если он существует или вы можете написать менее чем за 5 минут (не хотите тратить время впустую).
Инструмент, о котором идет речь, будет разрешать include, require, include_once и require_once в сценарии PHP и фактически рекурсивно кодировать его содержимое.
Это необходимо для доставки сценариев PHP в одном большом файле, который фактически использует код и ресурсы из нескольких включенных файлов.
Я знаю , что PHP не лучший инструмент для сценариев CLI, но, поскольку я наиболее эффективен в этом, я использую его для написания некоторых личных или частично личных инструментов. Мне не нужны бесполезные ответы или комментарии, которые говорят мне использовать что-то еще, кроме PHP, или изучать что-то другое .
Идея такого подхода заключается в том, чтобы иметь возможность иметь один файл, который представлял бы все необходимое для помещения его в мою личную директорию ~/.bin/
, и позволил бы ему жить там как полностью функциональный и автономный скрипт. Я знаю, что мог бы установить пути включения в сценарии к чему-то, что соответствовало бы стандартам каталогов данных XDG или чему-либо еще, но я хотел попробовать этот подход.
Во всяком случае, я спрашиваю там, потому что я не хочу заново изобретать колесо, и все мои поиски ничего не дали, но если у меня нет никакой информации, я продолжу в том же духе, что и на самом деле. напишите инструмент, который разрешит все, что включает и требует.
Спасибо за любую помощь!
P.S .: Я забыл включить примеры и не хочу перефразировать сообщение:
Эти два файла
mainfile.php
<?php
include('resource.php');
include_once('resource.php');
echo returnBeef();
?>
resource.php
<?php
function returnBeef() {
return "The beef!";
}
?>
Будет "скомпилировано" как (комментарии добавлены для ясности)
<?php
/* begin of include('resource.php'); */?><?php
function returnBeef() {
return "The beef!";
}
?><?php /* end of include('resource.php); */
/*
NOT INCLUDED BECAUSE resource.php WAS PREVIOUSLY INCLUDED
include_once('resource.php');
*/
echo returnBeef();
?>
Скрипт не должен выводить явные комментарии, но было бы неплохо, если бы он это сделал.
Еще раз спасибо за любую помощь!
РЕДАКТИРОВАТЬ 1
Я сделал простую модификацию скрипта. Поскольку я сам начал писать инструмент, я увидел ошибку, которую допустил в оригинальном сценарии. Включенный файл должен был бы, для выполнения наименьшего объема работы, быть заключенным из начального и конечного тегов (<?php ?>
)
Полученный пример сценария был впоследствии изменен, но он не был проверен.
РЕДАКТИРОВАТЬ 2
Скрипту на самом деле не нужно выполнять синтаксический анализ PHP-скрипта с высокой нагрузкой, как при точном анализе во время выполнения. Простые включения должны обрабатываться только (например, include ('file.php');).
Я начал работать над своим сценарием и сейчас читаю файл, чтобы неразборчиво разобрать их, чтобы они включали только в тегах <?php ?>
, а не в комментариях и в строках. Небольшая цель также состоит в том, чтобы иметь возможность обнаруживать dirname(__FILE__).""
в директиве include и фактически соблюдать ее.