2009-06-08 1 views
0

У меня есть два PHP файлы:Загрузить PHP-код в PHP для отложенного + параметризованного выполнения?

  • template.php
  • template.html.php

Первое определение класса для шаблона. Второй содержит фактический HTML-шаблон, однако с конструкциями PHP (отсюда расширение .PHP). Я бы назвал это гибридным файлом html/php.

Можно ли создать какую-либо функцию в шаблоне класса (special_include_parse()), который принимает:

  • $ путь (к гибридному HTML файл/PHP)
  • $ модель (который передается коду в гибридном файле html/php, поэтому его можно ссылаться с помощью $ this-> getModel() или $ model или любого другого ...)

?


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

Похоже, вы практически заново изобретаете систему шаблонов Fry: http://fry.sourceforge.net/ –

ответ

2

Um ... почему бы не просто установить $ это (хотя я бы не стал назовите это) и включите/require template.html.php, учитывая, что это в основном синтаксис PHP? В основном:

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

Лично хотя я думаю, что это яркий пример того, что делает что-то более сложное, чем это путем введения ненужный (на самом деле, контрпродуктивно) объект абстракции к чему-то, что это в противном случае довольно просто:

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

и

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

Я не уверен, почему вы усложнять его или, вернее, то, что вы пытаетесь достичь.

+0

У меня есть классы классов (.php), которые могут иметь связанный файл шаблона (.html.php). В конце скрипта getHtml() вызывается в классе View. На данный момент модель должна быть установлена ​​в классе View. ViewClass каким-то образом должен передать шаблон этой модели, поэтому шаблон можно проанализировать со значениями из модели. Я думаю, что буферизация вывода на самом деле является тем, что я ищу. Считаете ли вы, что есть еще один, более эффективный способ добиться того, чего я хочу? – Ropstah

+0

Как ваши мнения вызывают или ссылаются? – cletus

+0

Очень хороший ответ. Проблема решена полностью :) – Ropstah

Смежные вопросы