Запуск PHP для файлов шаблонов, загруженных из XML как DOMDocument

Я пишу свой собственный небольшой фреймворк MVC, который загружает файлы шаблонов на основе файла (ов) layout.xml, который указывает, какие файлы шаблонов куда загружать. Таким образом, существующие страницы могут быть легко расширены или изменены с помощью XML и новых (phtml) файлов шаблонов.

Для этого я использую объекты DOMDocument для загрузки файлов шаблонов в правильные элементы HTML. Сейчас это работает правильно, однако я только что понял, что PHP-содержимое файлов шаблонов будет просто интерпретироваться как простой HTML при преобразовании его в DOMDocument.

Как мне с этим справиться правильно? Я решил, что выполню PHP из файлов шаблонов с помощью eval (), а затем вставлю полученный HTML в объект DOMDocument. Однако я бы предпочел избегать использования оценка из-за его плохого имиджа (опасного и тяжелого?). Кажется, это именно то, что я ищу.

Если бы кто-нибудь мог дать мне совет по этому поводу, я был бы очень признателен.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
184
1

Ответы 1

Я думаю, что Twig переводит шаблоны в файл PHP, а затем запускает файл PHP для генерации вывода, вы можете сделать аналогичный процесс. Это также позволяет кэшировать сгенерированные шаблоны, что сокращает время синтаксического анализа. Поэтому вместо того, чтобы выполнять отдельные сегменты PHP, вы могли бы сделать что-то вроде ...

// Create temporary file (must have .php extension)
$fh = fopen ( "a.php", "w");
// Write out generated HTML
fwrite($fh, '<SomeTag>Content</SomeTag>'.PHP_EOL);
// Add in PHP code where necessary
fwrite($fh, '<?php'.PHP_EOL);
fwrite($fh, '$a = "1";'.PHP_EOL);
fwrite($fh, 'echo $a;'.PHP_EOL);
fwrite($fh, '?>'.PHP_EOL);
fclose($fh);

// Run the generated file
require "a.php";

Если вы хотите захватить вывод, используйте буферизацию вывода ...

ob_start();
require "a.php";
$html = ob_get_clean();

echo $html;

Другие вопросы по теме