У меня есть простой шаблон, который является html в основном, а затем извлекает некоторые вещи из SQL через PHP, и я хочу включить этот шаблон в три разных точки другого файла php. Каков наилучший способ сделать это? Могу ли я включить его, а затем распечатать содержимое?
Пример шаблона:
Price: <?php echo $price ?>
и, например, у меня есть еще один php-файл, который будет показывать файл шаблона только в том случае, если дата больше двух дней после даты в SQL.
Лучший способ – передать все в ассоциативном массиве.
class Template { public function render($_page, $_data) { extract($_data); include($_page); } }
Чтобы создать шаблон:
$data = array('title' => 'My Page', 'text' => 'My Paragraph'); $Template = new Template(); $Template->render('/path/to/file.php', $data);
Ваша страница шаблона может быть примерно такой:
<h1><?php echo $title; ?></h1> <p><?php echo $text; ?></p>
Extract – действительно отличная функция, которая может распаковать ассоциативный массив в локальное пространство имен, чтобы вы могли просто делать такие вещи, как echo $title;
,
Изменить: добавлены символы подчеркивания для предотвращения конфликтов имен на случай, если вы извлечете что-то, содержащее переменную «$ page» или «$ data».
Поместите ваши данные в массив / объект и передайте его следующей функции в качестве второго аргумента:
function template_contents($file, $model) { if (!is_file($file)) { throw new Exception("Template not found"); } ob_start(); include $file; $contents = ob_get_contents(); ob_end_clean(); return $contents; }
Затем:
Price: <?php echo template_contents("/path/to/file.php", $model); ?>