Optimisation PHP : les chaines de caractères
Publié le November 30th, 2007 par Jérémie Ducastel
Voici une petite astuce concernant les chaînes de caractères pour optimiser vos scripts PHP, que certains découvriront peut-être. Prenez l’habitude d’utiliser les apostrophes (simple quotes
) plutôt que les guillemets (double quotes
). Ceci parce que les chaines entre guillemets peuvent contenir des variables qui seront évalués à l’éxécution. Par exemple :
$uper_riche='Picsou';
// ceci affiche : Bonjour, je suis Picsou
echo "Bonjour, je suis $uper_riche";
// alors que ceci affiche : Bonjour, je suis $uper_riche
echo 'Bonjour, je suis $uper_riche';
// on peut utiliser les accolades pour acceder à des noms complexes
$Picsou->neveux=array('Riri','Fifi','Loulou');
// ceci affichera : Le second neveu de Picsou est Fifi, il en a trois
echo "Le second neveu de Picsou est {$Picsou->neveux[1]}, il en a trois";
Ce qui double son travail, car le code est d’abord interprété une première fois à la lecture du script et découpé en blocs sémantiques (chunks
) : variables, chaines, instructions etc. Une chaine entre apasotrophes sera alors conservée telle quelle jusqu’à la fin de l’execution du script, alors qu’une chaine entre guillemets devra être interprétée à chaque évaluation. Par conséquent, il vaut mieux les éviter autant que possible. Par exemple :
/**
* on construit une chaine de caracteres dynamiques en separant bien les chunks variables des blocs statiques
*/
$html='<p>Bonjour, je suis '.$uper_riche.'</p>';
/**
* on ne force pas l'evaluation du parametre passe a une fonction
*/
echo 'Qui est le plus riche ? '.strtoupper('picsou !');
/**
* idem pour les clefs d'un tableau associatif
*/
echo $personnages['picsou']['neveux'][1];
C’est le genre de petites choses qui peuvent paraitre évidentes une fois devenues une habitude, mais qui ensuite évitent de plomber vos scripts inutilement.