Partage
  • Partager sur Facebook
  • Partager sur Twitter

[POO] problème pour gérer des variables incluses dans des templates

Sujet résolu
    8 avril 2007 à 10:30:46

    Bonjour, j'ai écris un petit code permettant de gérer des templates en php4 avec des objets. Les templates sont correctement placés mais je rencontre des soucis pour intégrer des variables à l'intérieur de ces templates. J'ai testé deux méthodes:

    -la première:

    fichier class_tpl.php:

    class template
    {
            var $name;
            var $folder;
            var $tpl;
           
            function template ($folder)
            {
                    $this->name = '';
                    $this->folder = $folder."/tpl/";
                    $this->tpl = '';
            }
           
            function get ($tplname)
            {
                    if (!empty ($tplname))  $this->name = $tplname.'.tpl';
                    $this->tpl = $this->folder.$this->name;
                    if (file_exists ($this->tpl))
                    {
                            $temp = fopen ($this->tpl, "r");
                            $this->tpl = fread ($temp, filesize ($this->tpl));
                            print $this->tpl;
                    }
                    else echo 'le template '.$this->tpl.' n\' existe pas!';
            }
    };


    index.php:

    include 'include/config.php';

    $pagetitle = 'index';

    $tpl->get ('header');


    header.tpl:

    <head>
                    <title><?php echo $pagetitle ?></title>
            </head>


    Ce qui donne pour résultat dans le titre de la page web: "<?php echo $pagetitle ?>"

    -deuxième méthode: fonction include à la place de fopen:

    fichier class_tpl.php:
    class template
    {
            var $name;
            var $folder;
            var $tpl;
           
            function template ($folder)
            {
                    $this->name = '';
                    $this->folder = $folder."/tpl/";
                    $this->tpl = '';
            }
           
            function get ($tplname)
            {
                    if (!empty ($tplname))  $this->name = $tplname.'.tpl';
                    $this->tpl = $this->folder.$this->name;
                    if (file_exists ($this->tpl))
                    {
                            include $this->tpl;
                    }
                    else echo 'le template '.$this->tpl.' n\' existe pas!';
            }
    };


    Ce qui donne pour résultat dans le titre de la page web: "notice: undefined variable..."

    Auriez vous une idée?
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2007 à 10:48:21

      Faut que tu fasses passer les variables [ comme $pagetitle ] à la classe...

      Mais l'utilisation de la classe est superflue et lourde pour ce que tu veux faire jtrouve...
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2007 à 10:51:27

        J'y ai pensé mais comme il y aura énormément de variables différentes en fonction de la page à afficher (script de news, téléchargements....) ça me fera beaucoup trop de paramètres pour la fonction get(). Pour l'utilisation d'objets c'est certes un peu lourd mais c'est dans le but de progresser dans le langage et d'avoir un système assez portable et simple pour générer des templates.
        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2007 à 10:56:39

          <?php
          $var1 = 'Toto';
          $var2 = 'Lili'; /* Influencé par Yondaime :-° */
          require 'Tpls/page.tpl';
          ?>

          <!-- Header Machin et Tout -->
          <body><h3><?php echo $var1; ?></h3>
          <div><?php echo $var2; ?></div>
          </body>
          <!-- Fin de Page -->


          C'est pas portable et simple ça ??
          • Partager sur Facebook
          • Partager sur Twitter
            8 avril 2007 à 10:59:14

            :D c'est ce que je faisais jusque là mais comme je dis, j'aimerais surtout savoir manipuler ce genre de chose avec des objets pour progresser et n'avoir plus qu'une instruction à écrire pour inclure un template (et aussi insérer un minimum de code php dans mes tpl)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              8 avril 2007 à 11:31:49

              Citation : RedoX

              <?php
              $var1 = 'Toto';
              $var2 = 'Lili'; /* Influencé par Yondaime :-° */
              require 'Tpls/page.tpl';
              ?>


              Vade Retro, c'est "lala" et pas Lili :p

              Sinon, lourde, boarf, elle pèse rien cette classe ^^
              Et puis l'intérêt, c'est d'avoir des variables qu'on ne peut pas modifier * par accident *
              Mais comme il n'utilise pas les opérateurs de visibilité, il perd tout l'intérêt de la chose.
              • Partager sur Facebook
              • Partager sur Twitter
                8 avril 2007 à 11:34:30

                Citation : Yondaime


                Mais comme il n'utilise pas les opérateurs de visibilité, il perd tout l'intérêt de la chose.



                si tu veux parler des méthodes "private" et "public" je sais pas si c'est compatible php4...
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  8 avril 2007 à 11:55:24

                  Oui je parle de ça, et c'est bien incompatible avec PHP 4. Mais la POO avec une version de PHP antérieure à la 5, c'est pas de la POO, on perd presque tous les avantages que pourrait apporter l'OO.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 avril 2007 à 15:00:33

                    :D démasqué :p et oui je suis un peu en panique vu que ça rentre aussi dans le cadre professionnel comme ça fait partie d'un projet de stage en entreprise, je me suis pas limité à un seul forum!
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      8 avril 2007 à 15:33:13

                      Free a PHP 5, mais il faut mettre php5 comme extension et non php pour en bénéficier.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 avril 2007 à 15:43:08

                        même si je tiens à faire cela pour gagner en compétence je suis tout à fait d'accord avec toi, mais je suis hébéergé chez free et ils ne sont pas encore passé à php5... :-°:colere2:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 avril 2007 à 16:04:38

                          Citation : Yondaime

                          Free a PHP 5, mais il faut mettre php5 comme extension et non php pour en bénéficier.



                          Excellente nouvelle, j'étais certain que php5 était inutilisable chez free. Merci, ça va me faciliter quelques trucs. ;) PS: c'est quoi le délire avec le changement d'heure sur le forum? l'heure a été reculée d'une heure et les nouveaux messages sont insérés dans les anciens...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            8 avril 2007 à 16:09:19

                            Surement un bug, y a déjà eu des rapports là-dessus
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 avril 2007 à 16:31:03

                              bon finalement j'ai trouvé un moyen extremement simplissime (et peut etre un peu trop simpliste mais ça fonctionne :p ): je passe en paramètre de ma méthode un array associatif qui peut être instancié dans ma classe et être intégré sans problème dans mes tpl. voilà. merci à vous pour le coup de main (ça a l'air d'être réglé comme ça mais il est pas impossible de me voir revenir pour autre chose :-°:lol: ).
                              • Partager sur Facebook
                              • Partager sur Twitter

                              [POO] problème pour gérer des variables incluses dans des templates

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown