Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] Bug plugin html, jTpl et var_dump()?

Posted by Nesswaw on 08/19/2011 14:55

Bonjour,

En faisant des tests, j'ai trouvé quelque chose de bizarre....voici ce que j'ai fait:

Dans mon contrôleur test.classic.php:

<?php
class testCtrl extends jController
{
<code>
    function index()
    {
        $rep = $this->getResponse('html');
        $rep->body->assign('MAIN', '<h1>TEST</h1>');
        var_dump($rep);
        exit();
    }

}

</code>

Si j'ai pas de plugins jResponeHtml, mon var_dump() affiche une fois les variables de la réponse, comem normal.

Par contre si j'active des plugins:

[[jResponseHtml]]
plugins=debugbar, minify

Et que je refait un var_dump(), les variables sont afficher 3 fois de suite...je ne comprend pas pourquoi...est-ce un bug ou les plugins font appel aux réponses? ce qui alourdit pas mal le système si on génère beaucoup de contenu dans nos templates...

Merci

  [Opened] Bug plugin html, jTpl et var_dump()?

Reply #1 Posted by laurentj on 08/20/2011 11:34

si tu veux débugger, oublie les var_dump et autre exit, utilise jLog:log() ou jLog:dump(), cela s'affichera dans la debugbar.

Dans jelix, on ne fait jamais de echo/var_dump ou autre, c'est à la réponse de renvoyer le contenu.

  [Opened] Bug plugin html, jTpl et var_dump()?

Reply #2 Posted by Nesswaw on 08/20/2011 18:03

Oui je sais bien qu'il faut pas utiliser de var_dump(), mais ma question est: est-ce normal que Jelix stocke 3 fois les mêmes infos quand j'ai deux plugins qui tourne?

  [Opened] Bug plugin html, jTpl et var_dump()?

Reply #3 Posted by laurentj on 08/21/2011 14:49

Jelix ne stockes rien du tout. Encore une fois, il ne contrôle pas les appels d'affichage comme echo ou var_dump effectué en dehors de l'objet réponse. La seul chose qui est faite à certains moments, c'est l'activation du buffer de sortie (avec ob_start &co) : au moment d'affichage du contenu de la debugbar, au moment d'affichage du contenu généré par l'objet réponse, et un autre par jTpl pour générer le contenu du template. Mais tout ça est effectué après l'action, après avoir renvoyé l'objet réponse. Ce qui n'est pas le cas dans ton test puisque tu arrêtes brusquement l’exécution avec ton exit().

Et je viens d’exécuter ton code avec Jelix 1.3 avec la debugbar et minify activé, je n'ai qu'un var_dump de l'objet réponse à l'écran.

Donc je ne vois pas d'où vient ton problème. Soit cela vient d'un bug PHP, d'une config particulière de PHP, soit tu as peut-être une référence circulaire sur ton objet réponse quelque part, qui fait que le var_dump affiche plusieurs fois le contenu de ton objet réponse.

  [Opened] Bug plugin html, jTpl et var_dump()?

Reply #4 Posted by laurentj on 08/21/2011 14:56

Je viens de trouver en fait, il y a bien une référence circulaire : response->debugbar->response et response->minify->response. D'où l'affichage chez toi de 3 objets réponses, et en lisant rapidement à l'écran, tu as eu l'impression que ton var_dump a été effectué trois fois, ce qui n'est pas le cas.

Chez moi je ne le vois pas, car je dois avoir une version plus récente de PHP, cela m'affiche un *RECURSION* à la place de l'objet (et toi tu as à nouveau l'objet à la place de *RECURSION*) :

<code>
  ["plugins":protected]=&gt;
  array(2) {
    ["debugbar"]=&gt;
    object(debugbarHTMLResponsePlugin)#13 (3) {
      ["response":protected]=&gt;
      *RECURSION*
      ["plugins":protected]=&gt;
      array(1) {
        ["errors"]=&gt;
        object(errorsDebugbarPlugin)#14 (0) {
        }
      }
      ["tabs":protected]=&gt;

      array(0) {
      }
    }
    ["minify"]=&gt;
    object(minifyHTMLResponsePlugin)#15 (3) {
      ["response":protected]=&gt;
      *RECURSION*
      ["excludeCSS":protected]=&gt;
      array(0) {
      }
      ["excludeJS":protected]=&gt;
      array(0) {
      }
    }
  }
</code>

  [Opened] Re: Bug plugin html, jTpl et var_dump()?

Reply #5 Posted by Nesswaw on 08/23/2011 13:57

Y m'semblait que j'étais pas fou, alors c'est bien ce que je pensais, dans ce cas ce n'est pas un bug.

Merci pour la confirmation.

 
Page
  1. [Résolu] Bug plugin html, jTpl et var_dump()?