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

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

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

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

/*

* 自定义Smarty模板引擎类

*/

class Smarty{

private $vars = array();

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

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

public function assign($name,$value=null){

if($name != ' ')

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

}

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

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

public function display($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 = new Smarty();

// 连接数据库

//执行SQL语句

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

$title = "This is a test";

$content = "This is content ......";

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

$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 'This is a test' (length=14)

'content' => string 'This is content ......' (length=22)

This is a test

This is content ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值