@topuserman

Как передать в файл-шаблон, только одну переменную?

Всем привет, у меня есть некий файл-обработчик, который генерирует массив данных.
Эти данные надо пробросить в отдельный файл-шаблон.

Например:

// ...
$object = new DataObject();
$result = $object->getResult();

include "template.php";


Нужно, чтобы в template.php была доступна только переменная $result, какие есть варианты ?

Мне кажется, что как-то так можно:

// ...
$object = new DataObject();
$result = $object->getResult();

$includeTemplate = function () use ($result) {
     include "template.php";
};

$includeTemplate();


Есть ли рабочие варианты ?
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
SerafimArts
@SerafimArts
Senior Notepad Reader
Мне кажется, что как-то так можно:


почти, примерно как-то так:

/** @param array $args */ 
function render(): string
{
    // Распаковка "виртуального" аргумента (массива) в набор переменных для шаблона
    \extract(\func_get_args()[0] ?? []);

    // Перенаправление stdout в буфер
    \ob_start();
    try {
        require __DIR__ . '/path/to/template.php';
    } catch(\Throwable) {
        // Что-то пошло не так...
    } finally {
        return \ob_get_clean(); 
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
slashinin
@slashinin
Задачи для PHP https://justcoding.ru
Попробуйте создать свой шаблонизатор считывая файл шаблона через file_get_contents() или подключите сторонний шаблонизатор типа Smarty или Twig. Они будут видеть только те переменные, которые вы передадите т.к. содержимое шаблона не будет интерпретироваться PHP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы