PHP Manual
/
Optimisation des performances

Minimisation automatique des scripts PHP

22. 08. 2019

Parfois, nous avons besoin de réduire un grand script PHP et d'en compresser plusieurs en un seul fichier. C'est utile lorsque nous créons une bibliothèque que nous publierons sur le web et que nous ne voulons pas que quelqu'un interfère avec elle, ou qu'il s'agit d'un script utile que nous copierons souvent et que nous ne voulons donc pas transférer trop de données.

Une solution possible est de minifier le code.

J'ai préparé un outil en ligne pour cela (il suffit de coller le code et vous obtiendrez la version minifiée immédiatement).

Le noyau du hachoir peut être réduit à ce minimum :

$file = 'StaticClass.php';
// Le rétrécisseur PHP de Dgx
// Compatibilité avec PHP 4 et 5
if (!defined('T_DOC_COMMENT'))
define ('T_DOC_COMMENT', -1);
if (!defined('T_ML_COMMENT'))
define ('T_ML_COMMENT', -1);
// lire le fichier d'entrée
$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 = '';
}
}
// écrire le fichier rétréci
file_put_contents('min_'.$file, $output);

Le noyau est la fonction token_get_all(), qui analyse le code PHP en "atomes" individuels (tokens) qui peuvent être identifiés de manière unique et ensuite ignorés si nécessaire.

Par exemple, il génère (pour l'exemple, j'ai utilisé la méthode Nette\Utils\Images) :

Code minimisé

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