12 janvier 2010
2
12
/01
/janvier
/2010
21:47
Le problème
Quand on écrit un test logique, dans un if par exemple, la plupart d'entre nous va l'écrire de la façon la plus natuelle du monde : comme ça lui vient. C'est on ne peut plus normal d'écrire le code suivant :
if($variable == 'valeur'){
//faire des choses
}
Jusque là tout va bien. Sauf que parfois, même si c'est ce bout de code auquel on pense, nos doigts décident de tenter une révolte et de n'en faire qu'à leur tête (même si, techniquement, ils n'ont pas de tête) et on se retrouve avec ce code ci à la place :
if($variable = 'valeur'){
//faire des choses
}
Et là, c'est plus du tout pareil. Un seul signe '=' à la place de deux et le comportement ne correspond plus. Il arrive même, que celui à qui ce n'est jamais arrivé jette la première pierre, qu'on s'arrache les cheuveux à chercher l'erreur avant le if en se demandant comment notre variable peut bien contenir cette valeur.
La Solution
La solution à ce problème est simple. Elle demande un petit effort car pas forcement naturelle mais en un rien de temps ça devient une habitude. Il suffit simplement d'inverser les éléments de la comparaison :
if('valeur' == $variable){
//faire des choses
}
Dans ce cas, si un des deux '=' est oublié, PhP lui même vous signalera l'erreur. Puisqu'il n'est pas possible d'assigner une valeur à 'valeur', une erreur se déclanchera vous indiquant à quelle ligne corriger.
Evidemment ça ne marche pas dans le cas ou vous comparez une variable avec une autre mais ça réduit déjà un peu le champ des erreurs.