|
|||||||
| Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP |
|
|
Publicité ' | |||||||||||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#1 | ||
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Bonjour,
Chacun d'entre nous a pris l'habitude je pense de profiter de la souplesse de PHP, pour commencer à utiliser des variables sans les déclarer. Je parle de variables standars type $variable. (Pas de POST ou GET...) Du coup, avec un debug mis sur ALL, et dans le cas, d'une utilisation avec variable, on va se retrouver avec des erreurs style UNDEFINED VARIABLE. Ex: Code :
Alors on a tous l'habitude de mettre le notice_error à 2039. Mais du coup, on va générer de gros fichier d'erreurs sur nos serveurs, et je pars du principe que si on a une erreur, c'est que l'on a pas bien fais les choses. D'ou ma question, doit on prendre l'habitude de déclarer notre variable, même si on ne lui fait pas de settype, un peu inutile dans 99% des cas. Doit on faire un $var=""; ou $var=0 ou var=array(); à chaque fois? Vos avis? |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Perso oui je les déclarent. Sauf lorsque se sont des variables "tampons" ou a un usage très particulier comme par exemple une variable d'incrémentation dans une boucle.
Et dans la même veine le niveau d'erreur est toujours placé à E_STRICT ou E_ALL (je ne sais plus), m'enfin le plus sévère. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
Il te suffit de tester ta variable avant de l'afficher et ton code php sera propre
|
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() ![]() Inscription : mai 2008 Messages : 450 ![]() |
je els declare toujours car c'est plus facile pour la maintenance.
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() |
Pour éviter un maximum de problèmes, je pense qu'il vaut largement mieux les déclarer.
Le code source est ainsi plus compréhensible (et propre, en passant |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
J'ai donc finalement commencer par tout déclarer, contrairement à avant.
J'ai du coup règlé mon php.ini sur E_ALL pour l'affichage des erreurs. Comment ai je pu faire sans avant. Ca ne coute pas très cher en termes de temps, et ca permet de tout de suite voir des incohérences dans le code. Merci pour vos commentaires. |
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() ![]() Inscription : mai 2008 Messages : 450 ![]() |
si en plus tu commente ton code et que met des nom de variable explicite, 6 mois apres tu pourras te remettre dans ton code sans souci.
la souplesse de php est super, mais quand on bosse sur des grosses appli avec plein d'objet dans tout les sens etc... mieux vaut savoir qui est quoi des le depart. Et puis ca depend aussi de comment t'as appris la prog, j'ai commence avec turbo pascal (ct y'a looooooongtemps) donc j'ai toujours garder la structure de code suivante: 1. include (ca aide a pas etre surpris quand on vois $classExotique->methode) 2. variable et constant 3. code pur 4. detruit les variables et les objets (ca reduit le server load sur les projet a tres forte frequentation) |
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
j'ai appris avec la pratique....
|
|
|
00
|
|
|
#9 |
![]() ![]() |
Je dirai que ca dépend de ce que j'ai à faire.
Un petit site ou traitement non, un plus gros truc oui je commente et déclare avant chaque variable. Grosso modo si une fonction ou bout de code (comprenez bout de code qui fait 1 seul truc) dépassé l'ecran d'affichage je commente et déclare, si j'ai 3 bouts de code sur 1 affichage, non. |
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Petit question.
J'ai une fonction qui doit traiter des FLOAT. Je pensait faire: Code :
est ce que cela est correct? |
||
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() |
Pour ta question, moi je testerai ta variable avant l'appel avec une fonction comme is_float(). Si celle-ci renvoie false, je ferai, en effet, un cast (ou utiliserai floatval()) et lancerai l'appel de la fonction.
Pour en revenir à ton sujet, j'ai fait 4 ans de C et de C++ avant de commencer à coder en PHP. L'adaptation dans ce sens s'est faite très rapidement mais le contraire... c'est autre chose. C'est pourquoi j'ai repris mes bonnes vieilles habitudes de tout déclarer et tout initialiser! |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Salut,
Moi je forcerais le type, comme toi. Mais sur les nombres à virgule c'est un peu tendancieux... La question que je me pose c'est si j'envoie 3.33333333...3333.333 et que je le cast en float, sera t'il être arrondi ? Oui ? non ? En tout cas sa à son importance. Mais c'est spécifique à ce type de données pour les entiers, les chaines ect le problème ne se pose pas. bye |
|
|
00
|
|
|
#13 | ||||||||||||
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
ok, merci pour vos réponses, je vais donc concerver ma méthode.
Par contre en effet, c'est un gros problème pour moi. Autant le (float), le settype, ou le floatval() arrondissent apparement à la 8 ème décimale. Comment puis je m'y prendre pour convertir un string en float sans l'arrondir? Exemple: Code :
Code :
Et encore pire, si je prends un chiffre avec plus de nombre avant la virgule: Code :
Code :
Soit apparement, une conversion à 14 nombres maximum. Et un petit dernier pour la route: Code :
Code :
|
||||||||||||
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() |
Es-tu obligé de convertir en float? Je viens de découvrir les fonctions BC Math qui permettent des opérations sur des grands nombres
|
|
|
00
|
|
|
#15 | ||
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Je viens de voir tes fonctions BC MATH.
Bien que ceci a l'air pas mal, j'aurai vraiment préféré convertir mes variables. Ca me permettrait de savoir ce que retourne mes fonctions et faciliterait beaucoup de choses. Il semblerait que ca arrondisse également: Code :
EDIT: Pardon, je n'avais pas vu le parametre SCALE. |
||
|
|
00
|
|
|
#16 |
|
Membre éclairé
![]() |
et si tu précises le nombre de décimales en 3ème paramètre?
|
|
|
00
|
|
|
#17 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Oui, pardon, je n'avais pas vu le scale.
Cette méthode a l'air de fonctionner, mais ce n'est vraiment pas celle que je préfère. Impossible de convertir avec précision il semblerait selon la doc??? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com