有时我们需要缩小一个大的PHP脚本,并将其中的几个脚本压缩成一个文件。当我们正在创建一个将发布到网络上的库,而我们不希望任何人干涉它时,或者它是一个我们将经常复制的有用的脚本,因此不希望传输太多的数据时,这很有用。
一个可能的解决方案是将代码最小化。
我为此准备了一个在线工具(只需粘贴代码,你将立即得到最小化的版本)。
缩减器的核心可以减少到这个最小值。
$file = 'StaticClass.php';// Dgx的PHP收缩器// PHP4和5的兼容性if (!defined('T_DOC_COMMENT'))define ('T_DOC_COMMENT', -1);if (!defined('T_ML_COMMENT'))define ('T_ML_COMMENT', -1);// 读取输入文件$input = file_get_contents($file);$space = $output = '';$set = '!"#$&\'()*+,-./:;<=>?@[\]^`{|}';$set = array_flip(preg_split('//',$set));foreach (token_get_all($input) as $token) {if (!is_array($token))$token = array(0, $token);switch ($token[0]) {case T_COMMENT:case T_ML_COMMENT:case T_DOC_COMMENT:case T_WHITESPACE:$space = '';break;default:if (isset($set[substr($output, -1)]) ||isset($set[$token[1]{0}])) $space = '';$output .= $space . $token[1];$space = '';}}// 写入缩减后的文件file_put_contents('min_'.$file, $output);
核心是token_get_all()
函数,它将PHP代码解析成可以唯一识别的单个 "原子"(tokens),然后根据需要忽略掉。
例如,它生成(对于这个例子,我使用了Nette\Utils\Images
方法)。
。
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh