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  ![[:prozac] [:prozac]](https://forum-images.hardware.fr/images/perso/prozac.gif) 
  
 
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 ?  ![[:hotshot:3] [:hotshot:3]](https://forum-images.hardware.fr/images/perso/3/hotshot.gif) 
  
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)
 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 ?