Qu'est-ce que ce short_open_tag ?
Les normes de développement PHP recommandent fortement d'utiliser les balises d'ouverture php complètes (php open tags).
Nous avons récemment mis à jour un ancien projet PHP utilisant un framework propriétaire d'une de nos entreprises partenaires qui avait tendance à fortement utiliser les balises d'ouverture courtes (short_open_tag). Que ce soit <? ou <?=, chaque appel à php ou presque était fait en utilisant les balises courtes.
Nous avons décidé de nous occuper de cette question et de remplacer toutes les balises d'ouverture courtes par les balises complètes. La meilleure solution aurait été d'utiliser un processeur qui connaît la structure du langage afin de valider chaque remplacement. Toutefois, après avoir cherché des solutions sur Google, nous nous sommes rendu compte qu'aucune solution facilement et rapidmeent implémentable n'était disponible.
Nous avons constaté que la plupart des solutions fournies consistaient en des remplacements de texte simple au travers de scripts plus ou moins complexes (PHP, il est temps, Shell, Python ...), ces remplacements pouvant pourtant être réalisés grâce à 1 ou 2 lignes de commande.
Nous avons finalement décidé de traiter le problème en écrivant nos propres lignes de commande sous Linux en utilisant find, sed et xargs. La première ligne remplace les balises uniquement ouvrantes (<?), la seconde remplace les balises d'ouverture et d'affichage (<?=) :
find . | grep "\.php$" |xargs sed -i 's/\(<?\)\([^a-zA-Z=]\|$\)/<?php \2/g'
find . | grep "\.php$" |xargs sed -i 's/\(<?=\)/<?php echo /g'
Important: Même si ces commandes ont fonctionné directement pour nous, nous avons vérifié chaque ligne remplacée pour être sûr que cela ne posait aucun problème et avons retesté notre application en profondeur. Nous vous conseillons vivement de faire de même. Si vous trouvez un problème en utilisant ces commandes, merci de nous le faire savoir afin que nous puissions les corriger et de mettre à jour notre article si nécessaire.
Déjà un commentaire
Poster un commentaire