У меня есть PHP-скрипт, который включает одну или две другие библиотеки, которые зависят от использования оператора include
. Чтобы сделать его более переносимым, я хотел бы как-то «скомпилировать» сценарий и include
d библиотеки в один скрипт PHP (точно так же, как ack включает все его зависимости в Perl в одном файле). Есть ли простой способ сделать это в PHP?
Уточнение: компиляция в исполняемый файл Windows может быть (частью) приемлемым решением, но сценарий по-прежнему должен выполняться на * nix, где лучше иметь исходный код PHP с ' #!/usr/bin/env php
' at вершина.
Я хочу, чтобы иметь возможность удалить один файл в $ PATH где-нибудь на любой ОС и заставить его работать без необходимости установки дополнительных библиотек PHP.
Новые версии PHP поддерживают концепцию, похожую на jar-файлы в java. Взгляните на phar . Вы можете упаковать все ваши файлы приложений в один архив и запустить их.
Пакеты PHP ScriptJoiner или даже лучше JuggleCode могут помочь:
Оба они построены на PHP-Parser (http://packagist.org/packages/nikic/php-parser), что упрощает присоединение к скриптам.
Там нет встроенного способа сделать это. Я бы рекомендовал упаковать ваш код в каталог и распространять его таким образом. Я делаю это с помощью PHP, я помещаю код в каталог «something.module», а затем итерацию через каталог модулей, включая основной файл под каждым каталогом .module. Но для чего-то более простого, у вас может быть такая структура, как:
my_package/ my_package.php include1.php include2.php
my_package.php
будет include(realpath(dirname(__FILE__).'/inclue1.php'))
. Все остальные записи просто должны include('my_packahe/my_package.php')
В ручном режиме вы просто удаляете все ссылки include / require и объединяете файлы вместе. перед конкатенацией также следует разбить открытые и конечные теги («<? php», «?») и добавить их в окончательный файл.
Для одной или двух небольших библиотек она должна – надеюсь, – «просто работать» …
phc позволяет это. Просто запустите его с флагом --include
, и он объединит весь ваш код (ну, каждый аргумент в include
, require
и т. Д.) В один файл PHP.
Если вам нравится, он также может скомпилировать его, но это не обязательно, чтобы объединить их все в один файл.
Вы можете написать собственный скрипт, который открывает все файлы, удаляет открывающие и закрывающие теги и объединяет их вместе и сохраняет как один файл. должно быть довольно легко сделать.
Или вы можете использовать компилятор php. Это будет немного больше, чем то, что вы ищете, но если вам нужен только один файл, вы запускаете проект dev через один из них.
Вы также можете использовать встроенный компилятор байт-кода php для компиляции всего байтового кода и вставки его в один файл.