descargar - Fusionando mĂșltiples scripts PHP en un solo archivo
php manual (6)
Tengo un script PHP que incluye una o dos bibliotecas más, depende del uso de la declaración '' include
''. Para que sea más fácil de transportar, me gustaría "compilar" de alguna manera el script y las bibliotecas d include
en un solo script PHP (de la misma manera que ack incluye todas sus dependencias de Perl en un archivo). ¿Hay una manera fácil de hacer esto en PHP?
Aclaración: compilar en un ejecutable de Windows podría ser (parte de) una solución aceptable, pero el script aún debe ejecutarse en * nix, donde es mejor tener código fuente PHP con '' #!/usr/bin/env php
'' en la parte superior.
Quiero poder colocar un solo archivo en el $ PATH en algún lugar de cualquier sistema operativo y hacer que funcione sin necesidad de instalar bibliotecas PHP adicionales.
Las versiones más recientes de PHP admiten un concepto similar a los archivos jar en java. Echa un vistazo a phar . Podría empaquetar todos sus archivos de aplicación en un solo archivo y ejecutar eso.
Los paquetes PHP ScriptJoiner o incluso mejor JuggleCode podrían ayudar:
- http://packagist.org/packages/codeless/scriptjoiner
- http://packagist.org/packages/codeless/jugglecode
Ambos se basan en PHP-Parser (http://packagist.org/packages/nikic/php-parser), lo que hace que sea muy fácil unirse a los archivos de script.
Manualmente, simplemente elimina todas las referencias de inclusión / requerimiento y "concatena" los archivos juntos. también debe quitar las etiquetas de abrir y finalizar (''<? php'', "?>") antes de la concatenación, y agregarlas al archivo final.
Para una o dos bibliotecas pequeñas, debería, con suerte, "simplemente trabajar" ...
No hay una forma integrada de hacer eso. Recomendaría empaquetar su código en un directorio y distribuirlo de esa manera. Hago esto con PHP, coloco el código en un directorio "something.module", y luego lo itero a través de un directorio de módulos, incluido el archivo principal debajo de cada directorio .module. Pero para algo más simple, podrías tener una estructura como:
my_package/
my_package.php
include1.php
include2.php
my_package.php
include(realpath(dirname(__FILE__).''/inclue1.php''))
my_package.php
include(realpath(dirname(__FILE__).''/inclue1.php''))
. Todas las demás escrituras tendrían que include(''my_packahe/my_package.php'')
Podría escribir un script personalizado que abra todos los archivos, elimine las etiquetas de apertura y cierre, las concatene y guarde como un solo archivo. Debería ser bastante fácil de hacer.
O puedes usar un compilador php. Hará un poco más de lo que está buscando, pero si solo quiere un archivo, ejecute su proyecto de desarrollo a través de uno de estos.
También puede utilizar el compilador incorporado de código de bytes de php para compilar todo el código de bytes y pegarlo en un archivo.
phc permite esto. Simplemente ejecútelo con el indicador --include
, y combinará todo su código (bueno, cada argumento para include
, require
, etc.) en un solo archivo PHP.
Si lo desea, también puede compilarlo, pero no es necesario que los combine en un solo archivo.