@dev400

Rendering(шаблонизация) на чистом PHP без особых зависимостей?

Нужен пример(кусок кода) шаблонизатора на чистом php. То что мы вызываем в контроллере, где выбираем шаблон, и передаем переменные в представление. Решения из фреймворков имеют зависимости, они в данном случае недопустимы
  • Вопрос задан
  • 3928 просмотров
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Правильный код должен выглядеть так.
/**
 * Renders template
 *
 * @param string 0 Name of your template
 * @param mixed 1 Data passed to template
 * @return string
 */
function template()
{
    extract(func_get_arg(1));

    ob_start();

    if (file_exists(func_get_arg(0))) {
        require func_get_arg(0);
    } else {
        echo 'Template not found!';
    }

    return ob_get_clean();
}
// Usage
echo template('30.php', ['hello' => 'world!']);

Хотя в целом идея использования чистого PHP в качестве языка для шаблонов дурно пахнет. Советую Smarty.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
muhammad_97
@muhammad_97
PHP-разработчик
Создаем отдельную функцию template:

function template($__view, $__data)
{
    extract($__data);

    ob_start();
    
    require $__view;

    $output = ob_get_clean();

    return $output;
}


Аргументы названы так, чтобы не занимать названия $view и $data.

В шаблоне (profile.php):

// код
<?php echo $name ?>
// код


Использование:

echo template('views/profile.php', ['username' => 'John']);
Ответ написан
Ваш ответ на вопрос

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

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