首页 > 代码库 > PHP 自定义 Smarty 模板引擎类 高洛峰 细说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=http://www.mamicode.com/null){"./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页面
<html> <head> <title>{$title}</title> </head> <body> <h1>{$title}</h1> <div> {$content} </div> </body> </html>
输出结果
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 ......
本文出自 “津沙港湾” 博客,请务必保留此出处http://11410485.blog.51cto.com/11400485/1843240
PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。