首页 / PHP / PHP从写简单模板引擎,供新手学习
PHP从写简单模板引擎,供新手学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP从写简单模板引擎,供新手学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3091字,纯文字阅读大概需要5分钟。
内容图文
PHP自写简单模板引擎,供新手学习今天要写点小东西,突然想到要用模板引擎。就“随手”写了一个,发上来供新手学习。搞了这么久PHP,想想也真是感慨,当年研究了几天的东西现在一两个小时就弄完了,当年一起完耍的女神现在已经不知所踪了。。。咳咳,下面是代码:
tpl_dir = $tpl_dir; if(isset($cache_dir))$this->cache_dir = $cache_dir; if(isset($tpl_ext))$this->tpl_ext = $tpl_ext; if(isset($var_left))$this->var_left = $var_left; if(isset($var_right))$this->var_right = $var_right; } function load($tplfilename) { $tplfile = $this->tpl_dir.'/'.$tplfilename.$this->tpl_ext; if(!file_exists($tplfile)) die('Template not found: '.$tplfile); return $this->cache($tplfilename, $tplfile); } //判断模板是否缓存,如模板文件有更改则重新编译 function cache($tplname, $tpl_file) { $cache_file = $this->cache_dir.'/'.md5($tplname).'.php'; if(!file_exists($cache_file) || filemtime($tpl_file)>filemtime($cache_file)) $this->compile($tpl_file, $cache_file); return $cache_file; } //编译模板内容到PHP格式,并写入缓存 function compile($tpl, $cache) { $body = file_get_contents($tpl); $vl = $this->var_left; $vr = $this->var_right; $patterns = array( "#$vl\s*include:(.+?)\s*$vr#i", "#$vl\s*if\s+(.+?)\s*$vr#i", "#$vl\s*else\s*$vr#i", "#$vl\s*elseif\s+(.+?)\s*$vr#i", "#$vl\s*endif\s*$vr#i", "#$vl\s*/if\s*$vr#i", "#$vl\s*foreach\s+(.+?):(.+?)\s*$vr#i", "#$vl\s*endforeach\s*$vr#i", "#$vl\s*/foreach\s*$vr#i", "#$vl([0-9a-zA-Z_]+?)\.([0-9a-zA-Z_]+?)\.([0-9a-zA-Z_]+?)$vr#i", "#$vl([0-9a-zA-Z_]+?)\.([0-9a-zA-Z_]+?)$vr#i", "#$vl([0-9a-zA-Z_\[\]\'\"]+?)$vr#i", "#$vl([0-9a-zA-Z_]+?):(.*?)$vr#i" ); $replacements = array( "", "", "", "", "", "", "0):\$autoindex=0;foreach($\\1 as \\2):\$autoindex++; ?>", "", "", "", "", "", "" ); $body = preg_replace($patterns, $replacements, $body); file_put_contents($cache, "".$body); }}$view = new view();function show($tpl) { global $view; return $view->load($tpl);}
使用方法PHP文件:
<?phpinclude 'view.php';$title = '文档标题';$a=array('a'=>'rows','b'=>array('c'=>'inarray')); include show('index');
使用方法HTML模板文件:
{title} 你好,仅供参考
{a.a}{a.b.c}
{foreach a:$v}{autoindex}.{v}
{/foreach}{include:footer}
模板文件放在template目录,缓存放在cahce目录,这两个目录都要手动创建,缓存加上判断不可直接访问。可以使用
{include:子模板}
{if 条件}
{foreach 变量:as语句},$autoindex为自增变量
{调用函数:参数}
{变量},包含数组变量简化写法(最多只支持三维数组)
等语法。
好了,整个模板引擎实现比较简单,因为一直比较喜欢这种include方式的模板,只供新手学习原理就好了。
=====================国际惯例=======================
刚开始学着写一些博客,写得不好的地方请见谅,觉得还可以就赏脸赞下吧!
我的QQ群(PHP)336533596,QQ 451309839,欢迎加入。相互交流,聊天吹牛~
内容总结
以上是互联网集市为您收集整理的PHP从写简单模板引擎,供新手学习全部内容,希望文章能够帮你解决PHP从写简单模板引擎,供新手学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。