PHP Manual
/
Optimierung der Leistung

Automatische Verkleinerung von PHP-Skripten

22. 08. 2019

Manchmal müssen wir ein großes PHP-Skript verkleinern und mehrere davon in eine Datei komprimieren. Dies ist nützlich, wenn wir eine Bibliothek erstellen, die wir im Internet veröffentlichen wollen und nicht möchten, dass sich jemand daran zu schaffen macht, oder wenn es sich um ein nützliches Skript handelt, das wir oft kopieren werden und nicht zu viele Daten übertragen wollen.

Eine mögliche Lösung besteht darin, den Code zu verkleinern.

Ich habe dafür ein Online-Tool vorbereitet (fügen Sie einfach den Code ein, und Sie erhalten sofort eine verkleinerte Version davon zurück).

Der Kern des Minifiers kann auf dieses Minimum reduziert werden:

$file = 'StaticClass.php';
// PHP-Shrinker von Dgx
// Kompatibilität mit PHP 4 und 5
if (!defined('T_DOC_COMMENT'))
define ('T_DOC_COMMENT', -1);
if (!defined('T_ML_KOMMENTAR'))
define ('T_ML_KOMMENTAR', -1);
// Eingabedatei lesen
$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 = '';
}
}
// geschrumpfte Datei schreiben
file_put_contents('min_'.$file, $output);

Das Herzstück ist die Funktion token_get_all(), die PHP-Code in einzelne "Atome" (Token) zerlegt, die eindeutig identifiziert und dann bei Bedarf ignoriert werden können.

Zum Beispiel erzeugt es (für das Beispiel habe ich die Methode "Nette\Utils\Images" verwendet):

Minimierter Code

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:

Související články

1.
Status:
All systems normal.
2024