Déclaration des variable php, obligatoire ?

  • Auteur de la discussion Auteur de la discussion karrack
  • Date de début Date de début
Nouveau WRInaute
Salut,

Ma question concerne les erreurs induites par la non déclaration des variables php.

Lorsque je développe sous wamp, je laisse par défaut toutes les erreurs s'afficher.
Je remarque régulièrement des "Notice: Undefined variable:" sur mes variables. Erreur, qui n'apparait jamais lorsque le site est en ligne, ce type d'erreur étant désactivé sur les serveurs.

Ma question concerne donc, la "bonne méthode".
Faut-il toujours déclarer toutes ses variables ou est-ce que ce n'est pas nécessaire, point de vu "normalité", sécurité, ou fonctionnement.

Merci.
 
WRInaute accro
Oui c'est mieux de les déclarer, et de faire les tests isset() là où nécessaire.
Si c'est bien codé tu ne devrais pas avoir des notices/warnings même en error_reporting E_ALL.
 
Nouveau WRInaute
OK

Mais quel est l'intérêt réel de déclarer une variable ?

Attention, je ne parles pas des $_, mais de toutes les autres que l'on peut utiliser dans des routines ou appels bdd.
 
WRInaute accro
Avoir le contrôle parfait sur les données de la variable, exemple avec register_globals à On (certes obsolète), ça produit de belles failles de ne pas initialiser ses variables.
 
WRInaute accro
Outre le fait que la techno de certains langages te l'impose ça permet d'avoir la certitude du contenu et du type de celle ci en amont de son utilisation. Comme par exemple ne pas te retrouver avec une chaine de caractère là ou tu devrais manipuler un entier etc ...

Dans le cas particulier de php qui est un langage "bâtard" de ce point de vue, la déclaration et l'assignation des variable n'est pas requis car le langage implémente des traitement très très souples qui permettent pas mal de fantaisies, mais aussi certaines failles.

Pour reprendre l'analogie de contenu certaines failles de site connues sous forme d'injections SQL serait limitées par le typage des variables dans la mesure où tu ne pourrait pas injecter sous forme de texte un morceau de requête là ou le système attend un entier pour formuler son traitement SQL.

A contrario, de grosses sections de code serait nécessaires au traitement des exceptions ...
 
WRInaute accro
karrack a dit:
ce type d'erreur étant désactivé sur les serveurs.
justement, ça n'est pas bon : il faut faire afficher toutes les erreurs, sauf que sur le serveur de prod, au lieu de les afficher sur l'écran, tu les loggues dans un fichier
 
Nouveau WRInaute
OK.

Mais du coté fonctionnement.

Quel est l'intérêt de déclarer les variables avant de les utiliser ?
Qu'est-ce que cela offre comme avantage, qu'est-ce que cela empêche comme inconvénient ?
 
Discussions similaires
Haut