Іноді нам потрібно зменшити великий PHP-скрипт і стиснути кілька з них в один файл. Це корисно, коли ми створюємо бібліотеку, яку опублікуємо в Інтернеті і не хочемо, щоб хтось втручався в неї, або це корисний скрипт, який ми будемо часто копіювати і тому не хочемо передавати занадто багато даних.
Можливим рішенням є мінімізація коду.
Я підготував для цього онлайн-інструмент (просто вставте код і ви одразу отримаєте мініатюрну версію).
До цього мінімуму можна скоротити серцевину мініфікатора:
$file = 'StaticClass.php';// Dgx's PHP shrinker// Сумісність з PHP 4 та 5if (!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('хв'.$file, $output);
Ядром є функція token_get_all()
, яка розбирає PHP-код на окремі "атоми" (токени), які можна однозначно ідентифікувати, а потім ігнорувати за необхідності.
Наприклад, генерує (для прикладу я використовував метод 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: ... | uk