codeless / jugglecode
用于操作脚本文件中PHP语句的工具
Requires
- codeless/logmore: >=0.8.3
- nikic/php-parser: >=0.9.2
Replaces
- codeless/scriptjoiner: >=0.0.0
This package is not auto-updated.
Last update: 2023-09-16 07:50:29 UTC
README
JuggleCode 是一个用于操作脚本文件中PHP语句的工具。
特性
JuggleCode 可以
- 将多个PHP文件合并到一个输出文件中
- 从PHP文件中删除注释
- 压缩或替换PHP脚本中的函数和方法调用
用法
JuggleCode 总是期望一个PHP脚本作为输入。默认情况下输出重定向到stdout,但也可以捕获到文件中。
示例:file1.php 和 file2.php 形成一个PHP应用程序,并且应该只在一个文件中(命名为 app.php)分发。
file1.php
<?php
# file1.php:
echo 'File 1',PHP_EOL;
require('file2.php');
file2.php
<?php
# file2.php:
echo 'File 2',PHP_EOL;
要将这两个文件合并到 app.php 中,需要编写一个简短的PHP脚本
require('vendor/codeless/jugglecode/src/JuggleCode.php');
$j = new JuggleCode();
$j->masterfile = 'file1.php';
$j->outfile = 'app.php';
$j->mergeScripts = true;
$j->run();
上述脚本的头三行可以合并为
$j = new JuggleCode('file1.php', 'app.php');
合并过程的结果将如下所示
<?php
# file1.php:
echo 'File 1',PHP_EOL;
# file2.php:
echo 'File 2',PHP_EOL;
请注意,当启用 --mergeScripts 时,只有被识别为PHP脚本(通过它们的扩展名)才会合并到输出文件中!扩展名为 .inc 的文件不会合并。
也可以只合并特定的文件。想象一下下面的 script.php
<?php
require('lib.php');
require('debug.php');
# ...
要仅将 script.php 与 lib.php 合并,运行
<?php
$j = new JuggleCode();
$j->masterfile = 'script.php';
$j->outfile = 'app.php';
$j->mergeFile('lib.php');
$j->run();
输出将是
<?php
# Contents of lib.php
# ...
require('debug.php');
# ...
即使启用 mergeScripts,也会保留文件的动态包含
# This will not change:
$file = 'somedata';
require($file . '.txt');
要禁用输出中的注释,使用
$j->comments = false;
压缩函数和方法调用
$j->oppressFunctionCall('str_replace'); # Oppress all calls to str_replace
$j->oppressMethodCall('$foo', 'foo'); # Oppress all calls to $foo->foo()
$j->oppressMethodCall('Foo', 'foo'); # Oppress all calls to Foo::foo()
替换函数和方法调用
# Replace all calls to str_replace with str_ireplace:
$j->replaceFunctionCall('str_replace', 'str_ireplace(%args%)');
# Replace all calls to $foo->foo() with foo():
$j->replaceMethodCall('$foo', 'foo', 'foo(%args%)');
安装
JuggleCode 可以通过 Packagist/Composer 轻松安装。
JuggleCode 使用想法
- 将PHP应用程序部署为单个文件和不同版本:一个版本包含调试功能,另一个版本没有
JuggleCode 改进想法
- 允许创建单个文件PHP补丁脚本,可以覆盖一个或多个其他PHP文件中的PHP语句
- 压缩或替换函数或方法定义的主体(replaceMethodBody,replaceFunctionBody)
- 通过将 JuggleCode 类分解成多个类来改进代码,例如一个用于方法,一个用于函数,等等。
- 将 JuggleCode 转换为PHP扩展(参见PHP预处理器,如http://www.ohloh.net/p/pihipi 和 http://code.metala.org/p/ccpp)
- 查找空函数和方法;自动压缩那些定义以及调用
- 从不可模板化的PHP脚本文件生成可模板化的脚本
JuggleCode 的替代方案
致谢和错误报告
JuggleCode 由 Codeless 编写(http://www.codeless.at/)。所有错误报告都可以发送到 more@codeless.at。更好的是,错误报告已发布在此软件包的 github-repository 上:https://www.github.com/codeless/jugglecode。如果没有 nikic 的 PHP-Parser 软件包,JuggleCode 就不可能实现:https://www.github.com/nikic/php-parser。
授权
本作品采用 Creative Commons Attribution-ShareAlike 3.0 Unported License 授权: http://creativecommons.org/licenses/by-sa/3.0/deed.en_US