Итак, в основном вам нужно получить некоторые данные из базы данных, а затем использовать файл PHP в качестве шаблона для создания файла HTML.
Самый простой способ сделать это - просто include
шаблон в соответствующей точке в коде генератора шаблонов; Вы можете поместить ob_start
и ob_get_clean
вокруг вызова, чтобы записать вывод в строку вместо того, чтобы отправить его клиенту. Переменные в области, из которой вызывается include
, будут доступны внутри включенного файла. Пример:
<?php
foreach ($rows as $row) {
ob_start();
include 'template.php';
$data = ob_get_clean();
file_put_contents('target/' . $row['name'] . '.html');
}
... и шаблон может делать что-то вроде:
Однако при таком подходе есть некоторые соображения:
- Если шаблоны содержат опасный код, он будет выполнен.
- Шаблон имеет доступ ко всем переменным, находящимся в области действия на момент включения, включая переменные, которые вы не хотите изменять. Это можно несколько облегчить, поместив вызов шаблона в выделенную функцию.
Другой подход заключается в простом поиске и замене в загруженном шаблоне; вместо использования PHP в качестве языка шаблонов вы в основном изобретаете свой собственный. Это менее эффективно, но безопаснее, потому что вы ограничиваете доступ шаблона к внутренностям вашей программы.
Еще одним вариантом является база данных в XML по маршруту XSLT - загрузите ваши данные, преобразуйте их в представление XML, примените шаблон XSLT, который выводит (X) HTML. Это обеспечивает гибкость и безопасность от инъекций, но XSLT довольно сложно освоить, сложнее отладить, а преобразование в XML менее эффективно, чем прямой путь к PHP.