Les fonctions de débug sur Prestashop 1.4 ne marchent pas ? Voyons pourquoi !
En cette belle soirée, j’ai décidé de retravailler sur un petit module dont j’avais entamé le développement il y a quelques mois, lorsque Prestashop n’en était qu’à sa version 1.3.2. Faute de temps j’avais abandonné ce projet.
Depuis le temps Prestashop a évolué (et ça c’est bien !) pour afficher une belle version 1.4 et toutes ses nouveautés (en détails ici sur le blog officiel de la boutique e-commerce). De mon côté, temps retrouvé, j’ai décidé de reprendre le développement de mon petit module (un simple bloc qui affichera les derniers produits vendus), mais ce, sur la nouvelle mouture 1.4.
J’ai directement été confronté à un problème : impossible de faire fonctionner les fonctions de débugs d() et p()… Au début je ne comprenais pas, j’exécutais par exemple un simple test comme celui-ci :
d('je passe ici, arrête toi petit script !);
ou encore
p('affiche toi petit test !');
Mais rien…
Dès lors je me lance dans un simple :
die('Salut, je m'arrête ici !');
Et là ! Miracle ça fonctionne…
Je décide dès lors de prendre le taureau par les cornes, et jette un oeil dans la Class Tools (classes/Tools.php), contenant les méthodes static « d() » (ligne 530) et « p() » (ligne 540). Ces méthodes appelant la méthode « dieObject() » (ligne 512) de cette même class, j’y jette un oeil aussi. Et que vois-je ?
public static function dieObject($object, $kill = true)
{
if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_)
{
echo '<pre style="text-align: left;">';
print_r($object);
echo '</pre><br />';
if ($kill)
die('END');
}
return $object;
}
On remarquera le test sur la constante « _PS_MODE_DEV_« , qui, si elle n’est pas définie ou vaut « false », ne permet pas d’afficher le contenu de la variable $object passée en paramètre de méthode.
Après de multiples recherches infructueuses dans le back office, pensant que l’équipe de Prestashop avait mis en place un moyen de choisir la phase de développement du site, je me suis tourné vers une recherche plus classique, via un bon vieux éditeur (PSPad au passage, un de mes IDE), dans tous les fichiers source de Prestashop sur le mot « _PS_MODE_DEV_ ». Et je suis tombé sur le fichier config/defines.inc.php à la ligne 28 :
define('_PS_MODE_DEV_', false);
En remplaçant false par true comme ceci :
define('_PS_MODE_DEV_', true);
On peut utiliser les fonctions de débug à souhait !
Moralité de l’histoire :
Malgré les belles performances et la qualité du noyau Prestashop, on regrettera toujours le manque flagrant de documentation de la boutique (si on la compare à un Joomla!, un Drupal, un WordPress etc…). Et ceci est fort regrettable ! Même si dans le cas de cet article le besoin n’est pas indispensable, de manière générale on peut le regretter, surtout avec l’arrivée de la refonte du noyau et la possibilité de surcharger les class et méthodes du noyau PS 1.4 !
Sur ce, j’espère que ça aura servit à certaines personnes.
| Imprimer l'article | Cette entrée a été posté par benny le 10 avril 2011 à 23 h 27 min, et placée dans Astuces. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez laisser une réponse, ou bien un trackback depuis votre site. |

