首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php的模板?

使用php的模板?
EN

Stack Overflow用户
提问于 2009-08-20 18:32:36
回答 5查看 308关注 0票数 1

什么是最好的方式来创建我自己的模板引擎使用php,以转移html模板到实际的网站,并取代占位符的实际数据…好吧,让我来解决我自己的问题。

代码语言:javascript
复制
class Template{

$private $output = '';

public function Load_Template($template){
    ob_start();
    include($template);
    $this->output = ob_get_clean();
}

public function Replace($data){
    $this->output = str_replace(array_keys($data), array_values($data), $this->output);
}
public function Display($add_footer = true){
    echo $this->output;
}

}

这将适用于一个简单的模板,如...

代码语言:javascript
复制
<div>{username}</div>

但是在我的模板中使用循环最好的方法是什么呢?让我们这样说:

代码语言:javascript
复制
<ul>
    <li>{username}</li>//Loop this line for each user
</ul>

另外,我不想使用像smarty这样的第三方引擎,我只想知道我自己怎么做。谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-20 18:38:23

老实说,如果我必须用PHP创建自己的模板引擎,我会直接使用PHP。只需要限制自己只使用“模板”中的变量插值和循环即可。

编写自己的模板引擎是一件棘手的事情。毕竟,您正在发明一种全新的语言,尽管它很简单。要让它变得非常强大(即,超越简单的字符串替换),您可能必须编写一个实际的基于堆栈的解析器,而不是依赖于str_replace

您可以使用正则表达式来实现这一点,就像您可以使用正则表达式解析HTML一样,但是它不是非常可靠、易于阅读、易于调试或易于扩展。

票数 3
EN

Stack Overflow用户

发布于 2009-08-20 18:39:01

use php itself怎么样?

代码语言:javascript
复制
<div><?php echo $username ?></div>

<ul>
    <?php foreach($users as $user): ?>
    <li><?php echo $user->username ?></li> 
    <?php endforeach ?>
</ul>

*注意:时髦的endforeach语法解释了here

票数 4
EN

Stack Overflow用户

发布于 2009-08-20 18:42:14

您提到您不想使用像Smarty这样的第三方引擎,但您基本上是在着手做与Smarty正在做的完全相同的事情。

在谈到PHP中的模板时,人们经常忽略的一点是,PHP是一种模板语言。你没有理由不能在你的模板中使用常规的旧PHP。事实上,这正是它最初设计的目的。

如果您真的想构建自己的模板引擎,那么您必须坐下来为循环和您想要使用的任何其他模板结构设计一个语法。就像[do 5 times] { loop code }一样。你想怎么编就怎么编。然后,您必须使用PHP解析它,并修改模板以将其替换为循环结构。

这是一项艰巨的任务。使用普通的PHP会容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1308023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档