Ответ 1
Более новые версии PHP поддерживают концепцию, похожую на jar файлы в java. Взгляните на phar. Вы можете упаковать все ваши файлы приложений в один архив и запустить их.
У меня есть PHP script, который включает в себя одну или две другие библиотеки, которые зависят от использования инструкции include
. Чтобы сделать его более переносимым, я хотел бы как-то "скомпилировать" библиотеки script и include
d в один PHP скрипт (так же, как ack включает все его зависимости в Perl в одном файле). Есть ли простой способ сделать это в PHP?
Разъяснение: Компиляция в исполняемый файл Windows может быть (частью) приемлемого решения, но script все еще нужно запускать на * nix, где лучше иметь исходный код PHP с '#!/usr/bin/env php
' вверху.
Я хочу, чтобы иметь возможность удалить один файл в $PATH где-нибудь в любой ОС и заставить его работать без необходимости добавления дополнительных библиотек PHP.
Более новые версии PHP поддерживают концепцию, похожую на jar файлы в java. Взгляните на phar. Вы можете упаковать все ваши файлы приложений в один архив и запустить их.
Пакеты PHP скриптJoiner или даже лучший 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.
Если вам нравится, он также может скомпилировать его, но это не обязательно, чтобы объединить их все в один файл.
Вы можете написать пользовательский script, который открывает все файлы, удаляет открывающие и закрывающие теги и объединяет их вместе и сохраняет как один файл. должно быть довольно легко сделать.
Или вы можете использовать компилятор php. Это будет немного больше, чем то, что вы ищете, но если вам нужен только один файл, вы запускаете проект dev через один из них.
Вы также можете использовать встроенный компилятор байт-кода php для компиляции всего в байтовый код и вставьте его в один файл.