600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php 高洛峰 正则 PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP

php 高洛峰 正则 PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP

时间:2022-06-30 06:55:05

相关推荐

php 高洛峰 正则 PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP

smarty模板引擎类简单工作原理

利用Smarty 模板引擎类对模板文件中的变量进行编译,编译过程其实就是利用正则表达式翻译成PHP文件。例如 模板文件中{$title}利用正则表达式找到并替换成 <?php echo $this->vars['title'];?>

自定义 Smarty 模板引擎类 smarty.class.php页面<?php

/*

*自定义Smarty模板引擎类

*/

classSmarty{

private$vars=array();

//第一个向模板中分配变量

//有两个参数一个参数是模板中的变量名,一个时分配给它的变量值

publicfunctionassign($name,$value=null){

if($name!='')

$this->vars[$name]=$value;

}

//加载指定的模板并显示

//有一个参数是模板的文件名

publicfunctiondisplay($tplname){

$comfile="./comps/".$tplname."_com.php";

$tplname="./templates/".$tplname;

//编译文件不存在或者模板文件有变化才需要编译

if(!file_exists($comfile)||filemtime($tplname)>filemtime($comfile)){

$html=file_get_contents($tplname);

//要替换的部分{title}

$reg='/\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}/';

//变量正则表达式[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

//替换后的部分<?php echo$this->vars['title'];?>

$rep="<?php echo\$this->vars['\\1'];?>";

$newhtml=preg_replace($reg,$rep,$html);

file_put_contents($comfile,$newhtml);

}

include$comfile;

}

}

调用模板页面 index.php<?php

header('content-type:text/html;charset=utf-8');

/*

*模版引擎

*PHP超文本预处理脚本语言

*自定义模板引擎

*

*/

//包含模板引擎类

include'smart.class.php';

//创建模板引擎对象

$smarty=newSmarty();

//连接数据库

//执行SQL语句

//这是从数据库获取的动态数据,需要在模板中显示

$title="Thisisatest";

$content="Thisiscontent......";

//第一个向模板中分配变量

$smarty->assign('title',$title);

$smarty->assign('content',$content);

var_dump($smarty);

//加载指定的模板并显示

$smarty->display('c.php');

模板文件页 c.php页面

{$title}

{$title}

{$content}

输出结果object(Smarty)[1]private'vars'=>

array(size=2)

'title'=>string'Thisisatest'(length=14)

'content'=>string'Thisiscontent......'(length=22)

Thisisatest

Thisiscontent......

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。