gpt4 book ai didi

PHP 模板

转载 作者:行者123 更新时间:2023-12-04 16:37:45 33 4
gpt4 key购买 nike

我正在用 PHP 编写一个简单的模板层,但我遇到了一些困难。目前它是这样工作的:

首先,我使用 fetch_template 从数据库中加载模板内容 - 这可行(如果您有兴趣,我会在启动时收集所有模板)。

我在模板代码和逻辑中使用 PHP 变量 - 例如:

// PHP:
$name = 'Ross';

// Tpl:
<p>Hello, my name is $name.</p>

然后我使用 output_template(如下)解析模板中的变量并替换它们。以前我使用带有美化的 str_replace 模板类的模板标签,但效率太低。

/**
* Returns a template after evaluating it
* @param string $template Template contents
* @return string Template output
*/
function output_template($template) {
eval('return "' . $template . '";');
}

如果您还没有猜到的话,我的问题是变量没有在函数内部声明 - 因此函数无法在 $template 中解析它们,除非我将它们放在全局变量中范围 - 我不确定我想做什么。或者将变量数组作为函数中的参数(这听起来更乏味但可行)。

除了在我的代码中使用函数中的代码(它只是一个单行代码)而不是使用函数之外,还有其他解决方案吗?

谢谢,罗斯

附言我知道 Smarty 和大量的模板引擎——我不想使用它们,所以请不要推荐它们。谢谢!

最佳答案

您可以使用 include($template_name) 而不是运行循环。

或者,如果你想要模板输出的内容,你可以这样做:

$template_name = 'template.php';

// import the contents into this template
ob_start();
include($template_name);
$content = ob_get_clean();

// do something with $content now ...

请记住,在您的模板中,您可以使用经常被忽视的 PHP 语法:

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

替代语法可用于 if、while、for、foreach 和 switch ...非常适合在模板中操作数据。有关详细信息,请参阅“Alternative syntax for control structures”。

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

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