mardi 9 décembre 2008
La plupart des programmeurs PHP que je connais utilisent les fonctions PHP var_dump() et print_r() pour effectuer la trace des variables pendant le débogage. Voici un petit aide-mémoire qui résume les fonctions à utiliser au besoin.
Pour un array donné :
$arrTest = array('a', 'b', 'c');
var_dump
var_dump($arrTest);
Résultat :
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
- Accepte une ou plusieurs variables en entrée
- Dans le cas de notre array, il retournera le type et la valeur de chaque clé dans une forme lisible
- Récursif, pour afficher la structure complète de l'objet
print_r($arrTest);
Résultat :
Array ( [0] => a [1] => b [2] => c )
- Accepte une seule variable en entrée
- Retourne la valeur de chaque clé, sans le type
- Accepte un deuxième argument (booléen) pour indiquer si on veut retourner le résultat dans une variable plutôt que de l'afficher. Par exemple : $result = print_r($arrTest, true);
Il existe une troisième façon intéressante et pratique, soit var_export, qui s'appele aussi avec un ou deux arguments.
var_export($arrTest);
ou
$result = var_export($arrTest, true);
Résultat :
array ( 0 => 'a', 1 => 'b', 2 => 'c', )
- Accepte une seule variable en entrée
- Retourne la valeur de chaque clé, sans le type
- Contrairement aux deux autres, le résultat est du code PHP valide
Comme ce que contient $result est une chaîne de caractère représentant un array PHP valide, on pourrait l'enregistrer et le récupérer plus tard en appelant la fonction eval() :
eval('$arrRecuperation = ' . $result . ';');
Ainsi, la variable $arrRecuperation est un array à nouveau.
Pour du débogage avancé (pour les tâches plus coriaces!), je vous recommande de jeter un oeil aux puissants outils fournis avec Zend Studio (breakpoints, stacks, introspection de variables, etc).