Задать вопрос
@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();


Есть ли рабочие варианты ?
  • Вопрос задан
  • 223 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽