【发布时间】:2026-02-11 08:10:01
【问题描述】:
我一直在网上寻找构建模板引擎的教程。我知道存在许多引擎,例如 smarty、twig 和 pattemplate,它们可以完全满足我的需求,但我正在学习如何构建一个。我从一个将字符串添加到数组中的模板引擎开始,然后显示该数组。从那时起,我使用eval() 构建了一个(见下文)。
<// Define links & folders
define("ROOT_HTTP", "http://" . $_SERVER['HTTP_HOST'] . "/preprocessor");
define("TEMPLATE", "/template");
// Get the template file
$template = file_get_contents("template/template.php");
// Replace
$template = str_replace("<x Title x>", displayTitle(), $template);
$template = str_replace("<x Menu x>", displayMenu(), $template);
$template = str_replace("<x Content x>", displayContent(), $template);
$result = @eval("?>" . $template . "<?");
function displayMenu(){
return "Link1<br />" .
"Link2<br />" .
"Link3<br />";
}
function displayTitle(){
return "Site Title <?php echo date(\"m-d-y\", time()); ?>";
}
function displayContent(){
return file_get_contents("content.php");
}
它运作良好,但不是我想要实现的目标。我想构建类似 Joomla 模板的东西,带有 <jdoc:include type="component" /> 之类的标签。我还希望它能够内联处理错误,这意味着它将显示错误的行号,或者当我调用echo "text" 时,它会在模板内的正确位置显示文本。
我如何按照这些思路创建一些东西?
【问题讨论】: