Lorsque je parcoure le code du Zend Framework, je vois souvent des conditions écrites sous cette forme :
if (0 == $argc) { // ... }
Jusqu'ici, je trouvais ça un peu bizarre, j'ai plutôt tendance à mettre la variable en premier et la valeur littérale en second. J'aurai donc écrit :
if ($argc == 0) { // ... }
Mais je viens de comprendre pourquoi en lisant cet excellent article de Kean WALMSLEY. En fait, ça permet de détecter une éventuelle erreur de frappe. En effet, si on oublie un signe égal, on réalise une assignation au lieu d'un test. En inversant l'ordre des opérandes, cela provoque une erreur lors de l'analyse du code effectuée par l'interpréteur PHP :
// Ce code provoque une erreur, car on essaie d'assigner une valeur à un littéral. if (0 = $argc) { // ... }
L'intérêt de cette astuce est limitée, car elle ne fonctionne que pour les test d'égalité et que les IDE affichent généralement des avertissements quand ils détectent une assignation dans une condition. Mais bon, c'est ce genre de truc qui peut vous faire passer pour un vieux routier du code ;-)
|
Besoin d'un développeur PHP/Zend Framework ? Contactez moi
Réactivité, coûts modérés, interlocuteur unique.
Maxence DELANNOY - Tél. : 09.70.46.32.55
|
|



Il existe une autre
Il existe une autre raison.
Par exemple :
Ici, on assigne le résultat de "strpos($truc, 'machin') !== false". Donc soit "true" soit "false".
Ici on stocke le résultat de "strpos($truc, 'machin')" dans $truc, qui est ensuite comparé à "false".
Bien entendu, c'est lié au fait que $truc ne peut être assigné à false (ou autre valeur constante). On aurait aussi pu mettre des parenthèses pour forcer la priorité.
pire
pire encore
http://moosh.et.son.brol.be/blog/index.php/2007/02/02/446-x-a-b-c-et-a-x...
J'ai vu cette astuce dans le
J'ai vu cette astuce dans le livre Ajax, bonnes pratiques Web 2.0 de C. Porteneuve. C'est très utilisé en Javascript visiblement. Mais j'ai plutôt du mal à m'y faire :)
Poster un nouveau commentaire