[OOP] return

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [OOP] return

    Hi,
    Ich habe schon wieder eine Frage
    Meine Seite basiert auf einem Templatesystem mit eval();.
    Das will ich auch in der Klasse so machen. Mache gerade testweise eine Kommentar-Klasse und scheiter jetzt schon bei der Ausgabe des fomulars.

    Erstmal, um über das Templatesystem eine Seite auszugeben muss man das so machen:

    PHP-Code:
    eval("\$body.= \"".gettemplate("lala")."\";"); 
    Die Endung ist automatisch .html.

    Meine Funktion in der Klasse sieht so aus:
    PHP-Code:
    function show_formular() {
           return eval(
    "\$this->body.= \"".gettemplate("templates/".$this->template_ordner."/news_comments_form")."\";");
       } 
    die $this->template_ordner ist auch im Konstruktor und funktioniert auch. Wenn sie nicht stimmt wird auch bei der SEite eine Fehlermeldung ausgegeben, dass die Datei nicht existiert(weil ja falscher Ordner oder falsche Datei).

    die $this->body habe ich nirgendwo angegeben, hatte es aber eigentlich schon probiert und sie im Konstruktor angegeben.

    Ich führe dass dann so aus:
    PHP-Code:
    echo $news_c->show_formular(); 
    $news_c= &new comments("news",$news_comments,$lang,$db_handler,$template_ordner,$body);


    <-- Das steht noch nach der klasse.

    Wenn ich das jetzt aber ausführe, passiert gar nichts.
    Er gibt auch keinen Fehler oder sowas aus.
    Aber eigentlich soll er ja ein Formular ausgeben.
    Was mache ich falsch?


    Hoffe ihr habt es alle verstanden.

  • #2
    Hast du überall mal mit echo Testausgaben gemacht?

    Z.B. echo $this->body; nach dem eval() [dann aber das return solange weg]
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Hi,
      Wenn ich die Funktion so mache:
      PHP-Code:
      function show_formular() {
       eval(
      "\$this->body.= \"".gettemplate("templates/".$this->template_ordner."/news_comments_form")."\";");
             echo 
      $this->body;
         } 
      gibt er mir das komplette formular aus.
      Aber wieso geht dass nicht über return eval...?

      Kommentar


      • #4
        PHP-Code:
         eval("return \\$this->body.= \\"".gettemplate("templates/".$this->template_ordner."/news_comments_form")."\\";"); 
        oder das eval lasses wie's ist und danach return $this->body
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          hmm...irgendwie bin ich zu blöd dazu

          wenn ich das so mache, wie mrhappiness sagt, also die 1. version, gibt er gar nichts aus.

          Wenn ich das eval() ganz normal lasse und ohne return und dadrunter
          return $this->body;
          mache gibt er das Forumlar zwar aus, aber an der falschen stelle.
          Denn ich habe zuerst die navigation über template und den header und die $body ist eigentlich unter dem header und neben der navigation, aber der gibt es als erstes aus. Also ganz oben auf die Seite.

          Wieso?

          Kommentar


          • #6
            Original geschrieben von Creativ
            Wenn ich das eval() ganz normal lasse und ohne return und dadrunter
            return $this->body;
            mache gibt er das Forumlar zwar aus, aber an der falschen stelle.
            Denn ich habe zuerst die navigation über template und den header und die $body ist eigentlich unter dem header und neben der navigation, aber der gibt es als erstes aus. Also ganz oben auf die Seite.

            Wieso?
            Weil du das mit echo so festgelegt hast?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              sry wenn ich nerve, aber wie muss ich dass dann machen?
              Verstehe das nicht ganz.

              Kommentar


              • #8
                musst mit preg_replace arbeiten.

                Kommentar


                • #9
                  hmmm.....was soll ich denn da mit preg_replace?
                  Verstehe nicht ganz, was ich da ersetzten soll.


                  EDIT:
                  Hat sich erledigt. Habe es jetzt hingekriegt. Danke für eure Hilfe!
                  Zuletzt geändert von Creativ; 29.03.2005, 22:21.

                  Kommentar


                  • #10
                    Dann schreib doch auch hin was du jetzt gemacht hast.. dann ham auch andere die das vllt. interessiert was davon....!
                    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                    var_dump(), print_r(), debug_backtrace und echo.
                    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                    Kommentar


                    • #11
                      ok hier meine lösung:

                      Die funktion in der class:
                      PHP-Code:
                      function show_formular() {
                             eval(
                      "\$this->form.= \"".gettemplate("templates/".$this->template_ordner."/news_comments_form")."\";");
                              return 
                      $this->form;
                          } 
                      und die ausgabe in der news_comments.php
                      PHP-Code:
                      $body.=$news_c->show_formular($body); 

                      Kommentar

                      Lädt...
                      X