初探PHP模板技术
2006-07-12 01:16
323 查看
学PHP之前,一直以为PHP模板是一项很高深莫测的技术。
和以往一样,为了学习它,在各大搜索引擎里搜索有关PHP模板的文章。很遗憾的是,搜索到的全是PHPLIB之类的PHP模板类的使用。
用ASP写过生成静态页面的文章系统——用户可以重新定义模板文件。这时,我在想,PHP模板会不会也是原理呢?
有一个使用PHPLIB的例子,上面有一条注释:用**变量的值替换掉模板文件中的**字符串。
可谓不谋而合!果然都是这个原理。
当初在ASP里,我将替换模板的功能写成了一个函数,并将它保存为公共的包含文件,这样,当需要替换模板时,就可以当该文件包含到当前页,然后调用该函数即可。
为什么叫“PHP模板类”?学PHP之前,我以为,“PHP模板”是PHP的一个类别。现在看来,这个认识肤浅到什么程度!现在的理解是:将模板替换封装成一个类!
由此可见,PHP模板类的原理很简单:类+模板替换。
说到替换,我第一个想到的就是正则表达式。PHP里字符替换函数大部分都是基于正则的。
所以,我个人认为,实现PHP模板类的原理是:类+正则表达式。
写了第一个PHP模板类,功能简单得不能再简单了:
cls.php -- 定义模板类
<?php
/***************
* cls.php *
***************/
class lly_template
{
var $template_file_name;
var $content;
function lly_template($filename = "template.html")
{
$this -> template_file_name = $filename;
}
function load()
{
$fs = fopen($this -> template_file_name,"r");
$content_ = fread($fs, filesize($this -> template_file_name));
fclose($fs);
$this -> content = $content_;
}
function repl($html_rep, $php_rep)
{
$this -> content = ereg_replace("/{".$html_rep."/}",$php_rep,$this -> content);
}
}
?>
test.php -- 调用模板类
<?php
/***************
* test.php *
***************/
include("cls.php");
$html = new lly_template();
$html -> load();
$html -> repl("subject","主题");
$html -> repl("content","内容");
echo $html -> content;
?>
template.html -- 模板文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>{subject}</title>
</head>
<body>
<p>{subject}</p>
<p>{content} </p>
</body>
</html>
和以往一样,为了学习它,在各大搜索引擎里搜索有关PHP模板的文章。很遗憾的是,搜索到的全是PHPLIB之类的PHP模板类的使用。
用ASP写过生成静态页面的文章系统——用户可以重新定义模板文件。这时,我在想,PHP模板会不会也是原理呢?
有一个使用PHPLIB的例子,上面有一条注释:用**变量的值替换掉模板文件中的**字符串。
可谓不谋而合!果然都是这个原理。
当初在ASP里,我将替换模板的功能写成了一个函数,并将它保存为公共的包含文件,这样,当需要替换模板时,就可以当该文件包含到当前页,然后调用该函数即可。
为什么叫“PHP模板类”?学PHP之前,我以为,“PHP模板”是PHP的一个类别。现在看来,这个认识肤浅到什么程度!现在的理解是:将模板替换封装成一个类!
由此可见,PHP模板类的原理很简单:类+模板替换。
说到替换,我第一个想到的就是正则表达式。PHP里字符替换函数大部分都是基于正则的。
所以,我个人认为,实现PHP模板类的原理是:类+正则表达式。
写了第一个PHP模板类,功能简单得不能再简单了:
cls.php -- 定义模板类
<?php
/***************
* cls.php *
***************/
class lly_template
{
var $template_file_name;
var $content;
function lly_template($filename = "template.html")
{
$this -> template_file_name = $filename;
}
function load()
{
$fs = fopen($this -> template_file_name,"r");
$content_ = fread($fs, filesize($this -> template_file_name));
fclose($fs);
$this -> content = $content_;
}
function repl($html_rep, $php_rep)
{
$this -> content = ereg_replace("/{".$html_rep."/}",$php_rep,$this -> content);
}
}
?>
test.php -- 调用模板类
<?php
/***************
* test.php *
***************/
include("cls.php");
$html = new lly_template();
$html -> load();
$html -> repl("subject","主题");
$html -> repl("content","内容");
echo $html -> content;
?>
template.html -- 模板文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>{subject}</title>
</head>
<body>
<p>{subject}</p>
<p>{content} </p>
</body>
</html>
相关文章推荐
- PHP模板技术初探
- 利用PHP与Smarty模板技术生成分页静态页面的代码
- 深入解析php模板技术原理【一】
- 推荐php模板技术[转]
- php之smarty模板技术
- 初探PHP的SQL注入攻击的技术实现以及预防措施
- php heredoc和phpwind的模板技术使用方法小结
- 用模板技术实现PHP代码和HMTL代码分离
- 推荐php模板技术[转]
- 推荐php模板技术[转]
- PHP中的模板技术
- php smart模板技术入门教程
- php模板技术
- PHP技术-实现一个最简单的模板分离
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- 利用PHP与Smarty模板技术生成分页静态页面的代码
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第51讲:PHP中smarty模板技术介绍
- 初探PHP的SQL注入攻击的技术实现以及预防措施
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- php heredoc和phpwind的模板技术使用方法小结