2009-06-08 8 views
0

ich habe zwei PHP-Dateien:PHP-Code für verzögerte + parametrierte Ausführung in PHP laden?

  • template.php
  • template.html.php

Die erste ist die Klassendefinition für Vorlage. Die zweite enthält eine tatsächliche HTML-basierte Vorlage, jedoch mit PHP-Konstrukten (daher die Erweiterung .PHP). Ich würde dies eine hybride HTML/PHP-Datei nennen.

Ist es möglich, eine Funktion in der Template-Klasse (special_include_parse()), die eine nimmt zu erstellen: (auf eine Hybrid html/php-Datei)

  • $ Modell

    • $ path (das an den Code in der hybriden html/php-Datei übergeben wird, so dass es mit $ this-> getModel() oder $ model oder was auch immer referenziert werden kann)

    ?


    template.php

    class Template { 
        function Parse($model) { 
         //include('/var/www/template.html.php'); 
         //fopen('/var/www/template.html.php'); 
         $return = special_include_parse('/var/www/template.html.php', $model); 
        } 
    } 
    

    template.html.php

    <html> 
        <head> 
         <title><? echo $this->getModel()->getTitle(); ?></title> 
        </head> 
    </html> 
    
  • +0

    Klingt, als erfindest du praktisch das Fry-Templating-System neu: http://fry.sourceforge.net/ –

    Antwort

    2

    Um ... warum nicht nur das $ gesetzt (obwohl ich würde nicht nenne es das) und beinhalte/benötige die template.html.php unter Berücksichtigung der PHP Syntax? Grundsätzlich gilt:

    class Template { 
        function Parse($model) { 
        ob_start(); 
        require '/var/www/template.html.php'; // I wouldn't use absolute paths 
        $return = ob_get_clean(); 
        } 
    } 
    

    Persönlich obwohl ich denke, dies ist ein gutes Beispiel ist die Herstellung etwas schwieriger, als es durch die Einführung eines nicht notwendig ist (in der Tat kontraproduktiv) Objekt Abstraktion zu etwas, das sonst ziemlich einfach ist:

    $model = new MyModel(...); 
    require 'template.html.php'; 
    

    und

    <html>... 
        <h3><?= $model->getStuff(); ?></h3> 
    

    ich bin mir nicht sicher, warum Sie es sind overcomplicating oder vielmehr das, was Sie versuchen zu erreichen.

    +0

    Ich habe View-Klassen (.php), die eine verknüpfte Vorlagendatei (.html.php) haben können. Am Ende eines Skripts wird getHtml() für die View-Klasse aufgerufen. Zu diesem Zeitpunkt sollte ein Model in der View-Klasse gesetzt sein. Die Viewclass muss dieses Modell irgendwie als Vorlage übergeben, damit die Vorlage mit Werten aus dem Modell analysiert werden kann. Ich denke, die Ausgabe-Pufferung ist tatsächlich das, wonach ich suche. Glauben Sie, dass es einen anderen, effizienteren Weg gibt, um das zu erreichen, was ich will? – Ropstah

    +0

    Wie werden Ihre Ansichten aufgerufen oder referenziert? – cletus

    +0

    Sehr nette Antwort. Problem komplett gelöst :) – Ropstah

    Verwandte Themen