@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();


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


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

/** @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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 150 000 до 190 000 ₽
от 80 000 до 120 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
07 мар. 2021, в 23:34
5000 руб./за проект
07 мар. 2021, в 23:14
10000 руб./за проект