savoir où est setée une variable - PHP - Programmation
Marsh Posté le 06-11-2009 à 20:09:56
oui , si register_globals est a true , ou pire , si le nom de variable est construit dynamiquement
genre ${'toto'.$i}
Marsh Posté le 07-11-2009 à 20:08:59
C'était ça
20 scripts plus loin dans 3 foreach imbriqués, y a un moment y a un
foreach ($report as $report_id){
...
$$report_id = true;
...
}
qui traine
Deux jours à débug
Est-ce qu'il existe un debugger qui peut détecter ce genre de truc ?
Marsh Posté le 07-11-2009 à 22:13:47
Moi dans ce genre de cas je passe la variable en constante via un define() au tout début du script et je regarde où ça pête
Marsh Posté le 08-11-2009 à 08:03:49
c'est pas idiot, mais ça risque de ne pas marcher ...
define('MA_VAR', true); ne définit pas la même chose que $MA_VAR, si ?
Marsh Posté le 08-11-2009 à 09:07:54
Je viens de faire un test et effectivement même si PHP permet plein de hacks, là il y a un soucis.
Code :
|
Selon la doc "$val" n'est pas un nom de constante valide, cependant il est accepté. Par contre si on essaie de faire $val = 2, PHP crée une variable $val et la met à 2. Donc les 2 dernière lignes retournent 2 choses différentes...
Donc en effet, en php ça marche pas (j'ai parlé trop vite désolé C'est un truc que j'utilise en Ruby en général)
Marsh Posté le 09-11-2009 à 10:18:42
Est-ce que quelqu'un aurait une solution pour ça ?
Même du coté de Xdebug ce n'est pas encore implémenté, il faudra attendre la version 2.1 : http://derickrethans.nl/variable_t [...] xdebug.php
Marsh Posté le 09-11-2009 à 15:13:00
Bon alors,
y a moyen de savoir où sa pète la première fois :
Code :
|
[edit] un peu mieux
Marsh Posté le 09-11-2009 à 15:28:49
pas simple en effet,
avec debug_zval_dump tu peu savoir combien de fois elles a été mise mais pas de numero de ligne
Marsh Posté le 06-11-2009 à 14:48:43
Dans mon projet de refactoring, quelque part dans un des scripts, j'ai une variable global dans une fonction.
si je fais un var_dump(); je vois qu'elle est setée à true.
Oui mais il n'y a aucune référence à cette variable ailleurs dans tout le projet.
Est-ce qu'il y a un moyen de seter une variable sans la mentionner explicitement ?