Étude de cas : Une perle dans l'utilisation de la fonction date de PHP
Par Méthylbro le vendredi 23 octobre 2009, 08:00 - Tutoriels - Lien permanent
Toujours plonger dans mes retouches sur un code source magnifiquement drôle depuis ces derniers jours. Je voudrais vous proposer aujourd’hui une nouvelle perle de développement PHP.
Aujourd'hui nous allons voir une implémentation hilarante de la fonction date().
La problématique est la suivante : afin de construire une chaîne de caractères vous avez besoin de connaître trois informations temporelles ; l'année, le mois et le jour courant.
Pour ce faire, voici ce qu'a proposé, écrit et mis en production un développeur :
$today = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$ladate = date("d / m / Y", $today);
$lemois = date("m", $today);
$lannee = date("Y", $today);
$lejour = date("d", $today);
Vous comprenez le problème ?
Ici l'interpréteur va calculer 8 fois la date. Sans compter bien évidement qu'utiliser la variable $today est inutile vu que la fonction date() retourne déjà la date du jour par défaut (ce que savais apparemment le développeur, puisqu'il utilise la fonction date() pour trouver la valeur de son $today) .
Bien évidement, il aurait été plus pertinent d'écrire quelque chose comme cela :
define('DATE_SEPARATOR', ' / ');
$today = getdate();
$lemois = $today['mon'];
$lannee = $today['year'];
$lejour = $today['mday'];
$ladate = $lejour.DATE_SEPARATOR.$lemois.DATE_SEPARATOR.$lannee;
Un seul calcul de date, on stocke les informations dans un tableau associatif et ensuite c'est juste un jeu d'affection de valeurs.

Commentaires
Oui mais tout le monde n'est pas un dieu comme toi (nous ?).
Sur le principe, on peut le faire en une ligne directement avec la fonction data même