gpt4 book ai didi

带有变量的 PHP 模板类?

转载 作者:可可西里 更新时间:2023-11-01 13:11:45 24 4
gpt4 key购买 nike

我想让我的新项目的开发更容易,我想要一个非常简单的模板引擎解决方案。我在网上四处查看,一切要么过于臃肿,要么让我感到畏缩。

我的 HTML 文件将是这样的:

<html>
<head>
<title>{PAGE_TITLE}</title>
</head>
<body>
<h1>{PAGE_HEADER}</h1>
<p>Some random content that is likely not to be parsed with PHP.</p>
</body>
</html>

显然,我想用我用 PHP 设置的内容替换 {PAGE_TITLE}{PAGE_HEADER}。像这样:

<?php

$pageElements = array(
'{PAGE_TITLE}' => 'Some random title.',
'{PAGE_HEADER}' => 'A page header!'
);

?>

然后我会使用类似 str_replace 的东西并将替换的 HTML 加载到一个字符串中,然后将它打印到页面上?这就是我目前正在做的事情......有没有人有任何建议或我可以做得更好的方法?

谢谢。

最佳答案

您当前的策略会奏效,而且非常简单。 str_replace() 高效且干净,您可以简单地循环它以替换与您的变量内容完全匹配的标记。然而,缺点是您必须先将所有模板加载到字符串中,这样效率很低。

另一种非常相似的替代方法,您可以简单地使用 extract() . Extract 将获取一组键/值对,并在本地范围内从中创建变量。如果您在同一范围内include() 一个模板,您的变量就可以使用了。

像这样:

function loadTemplate($template,$vars)
{
extract($vars);
include($template);
}

您的模板可以只是普通的 PHP。

<html>
<head>
<title><?php echo $PAGE_TITLE ?></title>
</head>
<body>
<h1><?php echo $PAGE_HEADER ?></h1>
<p>Some random content that is likely not to be parsed with PHP.</p>
</body>
</html>

(显然,您可以使用短标签来减少模板的冗长程度,但出于兼容性原因我不希望这样做。)

那么你所要做的就是:

$pageElements = array(
'PAGE_TITLE' => 'Some random title.',
'PAGE_HEADER' => 'A page header!'
);
loadTemplate('file.phtml',$pageElements);

关于带有变量的 PHP 模板类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com