[Funktion] ob_start()...

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

  • [Funktion] ob_start()...

    Nabend alle zusammen,

    Bin derzeit mal dabei mir dieses ob_start();. etc. anzuschauen und finde es sehr interessant.
    Gerade auch im Bezug auf die Denkweise von oder für Template-Engines ala Smarty.
    Smarty selbst muss ich an meiner Arbeit in der Firma nutzen und privat versuche ich gerade mit einfachen Tests mal eine "Art" kleiner TemplateEngine nachzustellen. Bin hier aber an ein kleines Hindernis gestoßen, wo ich entweder einen Denkfehler habe oder ich ob_start nicht ganz verstanden habe.

    In der hilfe steht zB:
    PHP-Code:
        ob_start();
        echo 
    '<h1>Hello world to cache</h1>';
        
    $content ob_get_contents();
        
    ob_end_clean();

        echo 
    $content
    Soweit auch kein Problem und läuft. Zusätzlich habe ich gelesen, dass man hier auch verschachtelt arbeiten kann. Also habe ich mir eine kleine Testumgebung aufgebaut, in der ich innerhalb von ob_start() und ob_end_clean() eine weitere PHP includiere.... soweit auch noch kein Problem. Problematisch wird es, wenn ich versuche, wiederum eine weitere PHP in dieser zu includierenden, die in einer eigenen op_start...etc.. drin steht.
    Er zeigt mir die 2x includierte PHP leider nur 1x an und scheint den bestehenden Buffer irgendwie zu überschreiben. Hoffe ihr könnt mir folgen...

    In einer echten TemplateEngine kann man ja ein Template auch mehrfach includieren...

    Gruß Mario

  • #2
    Du kannst ja mehrer Templates inkludieren. ob_start() darfst du nur beim ersten/obersten Template machen.

    index.php
    PHP-Code:
    ob_start();
    include 
    'template1.php';
    $content ob_get_contents();
    ob_end_clean();
    echo 
    $content
    template1.php
    PHP-Code:
    <h1>Hello world to cache</h1>
    <?php include 'template2.php'?>
    template2.php
    PHP-Code:
    <h2>Ich bin ein partielles Template.</h2

    Kommentar


    • #3
      [Funktion] ob_start

      Hi h3ll,

      Mit dem reinem Includieren klappts wunderbar. Da hast du Recht.
      Hatte mich nicht genau genug ausgedrückt.

      Ich möchte gern jedes Template für sich abarbeiten lassen und seperat auch in einem Array speichern. Ich habe eine kleine Klasse, in der es eine Methode gibt, die ich für das includieren nutzen möchte. Ich möcht mir somit die Möglichkeit geben, in meinen Templates beliebige Methoden der Klasse nutzen zu können. Diese Methode führt somit auch immer ob_start()... [include]... ob_clear() aus.

      Somit würde es auch zu solchen Strukturen kommen, wie ich sie derzeit habe.

      PHP-Code:
      tpl1
      - - tpl2
      - - tpl2
      - - - - tpl3
      - - tpl2 
      Hier würden in meinem Fall also ob_start... etc. mehrfach "nebeneinander bzw. hintereinander" ausgeführt werden. Ich weiß halt nicht, ob das überhaupt so funktioniert, wie ich mir das denke.

      Gruß Mario

      Kommentar


      • #4
        Eher nicht.

        Kommentar

        Lädt...
        X