Помогите с моим классом шаблонов PHP - PullRequest
0 голосов
/ 27 апреля 2010

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

<?php
class Template
{
    private $template;

    function load($filePath)
    {
        if(!$this->template = file_get_contents($filePath))
            $this->error('Error: Failed to open <strong>' . $filePath . '</strong>');
    }

    function replace($var, $content)
    {
        $this->template = str_replace("{$var}", $content, $this->template);
    }

    function display()
    {
        echo $this->template;
    }

    function error($errorMessage)
    {
        die('die() by template class: <strong>' . $errorMessage . '</strong>');
    }
}
?>

Мне нужна помощь с методом display(). Скажем, например, я использую этот код:

$tplObj = new Template();
$tplObj->load('index.php');
$tplObj->replace('{TITLE}', 'Homepage');
$tplObj->display();

И файл index.php такой:

<html>
    <head>
        <title>{TITLE}</title>
    </head>
    <body>
        <h1>{TITLE}</h1>
        <?php
            if($something) {
                echo '$something is true';
            } else {
                echo '$something is false';
            }
        ?>
    </body>
</html>

Мне просто интересно, будет ли там выполняться код PHP? Или это будет просто отправлено в браузере в виде открытого текста? Я использовал eval() в своем шаблонном классе, но я ненавижу эту функцию: P

Спасибо.

1 Ответ

1 голос
/ 27 апреля 2010

Нет. Это выйдет в виде простого текста.

вывод 'echo' без разбора PHP-кода.

Вам не нужно прибегать к использованию eval. Есть и другие способы, например, использование буферизации вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...