26-12-2008, 10:33 AM
Déjà à la base, cette question ne se pose que pour une langage typé.
Hors comme 99% des développement PHP ne le sont pas ^^
CQFD
Hors comme 99% des développement PHP ne le sont pas ^^
CQFD
26-12-2008, 10:33 AM
Déjà à la base, cette question ne se pose que pour une langage typé.
Hors comme 99% des développement PHP ne le sont pas ^^ CQFD
26-12-2008, 10:53 AM
Pour ma part, j'utilise régulièrement les comparaisons strictes systématiquement quand je dois tester des booléens sur des retours de fonctions. au lieu deDans les autres cas, je sis plus pernicieux. Par habitude et expérience, je mets les constantes à gauche dans une comparaison : Code PHP :
Code PHP :
Ca évite les erreurs de frappe du style : Code PHP :
26-12-2008, 12:04 PM
(26-12-2008, 10:33 AM)Wells a écrit : Déjà à la base, cette question ne se pose que pour une langage typé.CQFD rien du tout. :p Ce n'est pas parce que PHP n'est pas fortement typé que les types n'existent pas. C'est plus une question de rigueur que de nécessité/utilité. En rencontrant une égalité large (==), PHP va utiliser les types de données de chaque côté de l'opérateur pour les transtyper selon ses besoins. Autant faire cette manipulation explicitement, comme le conseille cette phrase célèbre du développement. Non ? Pas mal l'astuce, Barst. Cela dit, en mettant 3 signes égal, tu te rends compte rapidement quand il en manque deux. ^^ Je ferrais comme ça aussi, à l'avenir, c'est une possibilité de bug en moins. Sephi-Chan
Pour se qui est de "l'astuce", je pense serieusement qu'il faut vraiment pas etre doué pour oublié 2 "=", ou ne pas rapidement le voir, dans ce cas autant arreté la prog, c'est pas fait pour vous^^
PS: Cela me rajoute un argument pour moi d'aillieur, si on commence a partir avec des triple =, la confusion devient possible comme le disait brast, donc je trouve plus clair de rester a 1 ou 2 égal, pas besoin d'en rajouter Et personnelement je n'ai toujours pas comprit le probleme que cela pose d'utiliser "==", que ça utilise les deux types des deux oppérandes c'est super, et alors?
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
26-12-2008, 09:51 PM
(26-12-2008, 08:33 PM)Argorate a écrit : PS: Cela me rajoute un argument pour moi d'aillieur, si on commence a partir avec des triple =, la confusion devient possible comme le disait brast, donc je trouve plus clair de rester a 1 ou 2 égal, pas besoin d'en rajouterNon pas du tout. C'est l'inverse. Si tu oublies un égal alors que tu n'en utilises que 2, ça va générer un bug. Alors que si tu mets deux égal au lieu de trois, ça fonctionnera très bien quand même. (26-12-2008, 08:33 PM)Argorate a écrit : Et personnelement je n'ai toujours pas comprit le probleme que cela pose d'utiliser "==", que ça utilise les deux types des deux oppérandes c'est super, et alors?Aucune technique ne pose problème. C'est juste qu'il est plus rigoureux de travailler avec des égalités strictes, puisqu'il faut faire attention au typage des opérandes. Avec les comparaisons strictes, tu dois faire explicitement ce que fais la comparaison large implicitement. Et j'ai toujours lu que l'explicite était mieux que l'implicite. Je fais le choix de la rigueur, mais chacun fait ce qu'il souhaite. Sephi-Chan
Oui mais si le but est de faire comme si php ne géré pas lui même assez bien les types pourquoi utiliser php!
Après tout php offre la possibilité de ne pas avoir à se soucier des types, autrement dit, on utilise des ressources pour çà. A quoi çà sert de ne pas utiliser cette fonctionnalité! Surtout que je suis pas certains que ce sera plus rapide avec des comparaisons stricts!
28-12-2008, 03:22 PM
Je suis d'accord...
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
Je n'ai pas compris l'intérêt des === avec (int) dans l'exemple de Sephi-Chan.
Il me semble que ( (int) $chaineDeCaractere === 0 ) renvoit toujours true en PHP. De plus ça équivaut à ($chaineDeCaractere == 0) non ? (26-12-2008, 09:51 PM)Sephi-Chan a écrit :(26-12-2008, 08:33 PM)Argorate a écrit : PS: Cela me rajoute un argument pour moi d'aillieur, si on commence a partir avec des triple =, la confusion devient possible comme le disait brast, donc je trouve plus clair de rester a 1 ou 2 égal, pas besoin d'en rajouter Je suis plutôt d'accord avec Argorate sur ce point. Si tu utilises == et que tu oublies un =, ça va générer un bug et tu corrigeras l'erreur immédiatement. Si tu veux utiliser === et que tu oublies un =, le script fonctionnera, mais il ne fera pas exactement ce que tu souhaites et tu ne t'en rendras pas compte. Par ailleurs bien joué barst pour l'astuce de la constante à gauche. Mais je pense qu'elle est surtout utile quand on utilise == plutôt que ===, car il est plus fréquent d'oublier un signe égal que deux.
29-12-2008, 01:34 PM
( (int) $chaineDeCaractere === 0 ) renvoit toujours true en PHP.
===>O_o je sais pas d'ou tu sors ca mais c'est pas vrai du tout .... |
|