代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
php模板引擎
作者:
李朝强
/ 发布于
2015/5/6
/
632
<?php /** * * @author Joe * */ class view { private $file; private $temp_path = "theme/views/"; /* 未声明变量数组 */ public $vars = array(); public function __construct($template = NULL) { if (!empty($template)) { $this->display($template); } return $this; } // 获取所有未声明变量 public function getVars() { return $this->vars; } // 获取类中未声明变量 public function &__get($key) { if (array_key_exists($key, $this->vars)) { return $this->vars[$key]; } } // 设置类中未声明变量 public function __set($key, $val) { $this->vars[$key] = $val; } public function setAttr($key, $val) { $this->__set($key, $val); } // 设定模板路径 public function setPath($path) { $this->temp_path = $path; } // 转换 private function compile($file) { if (is_file($file)) { $keys = array( '{if %%}' => '<?php if (\1): ?>', '{elseif %%}' => '<?php ; elseif (\1): ?>', '{for %%}' => '<?php for (\1): ?>', '{foreach %%}' => '<?php foreach (\1): ?>', '{while %%}' => '<?php while (\1): ?>', '{/if}' => '<?php endif; ?>', '{/for}' => '<?php endfor; ?>', '{/foreach}' => '<?php endforeach; ?>', '{/while}' => '<?php endwhile; ?>', '{else}' => '<?php ; else: ?>', '{continue}' => '<?php continue; ?>', '{break}' => '<?php break; ?>', '{$%% = %%}' => '<?php $\1 = \2; ?>', '{$%%++}' => '<?php $\1++; ?>', '{$%%--}' => '<?php $\1--; ?>', '{$%%}' => '<?php echo $\1; ?>', '{comment}' => '<?php /*', '{/comment}' => '*/ ?>', '{/*}' => '<?php /*', '{*/}' => '*/ ?>', ); foreach ($keys as $key => $val) { $patterns[] = '#' . str_replace('%%', '(.+)', preg_quote($key, '#')) . '#U'; $replace[] = $val; } return preg_replace($patterns, $replace, file_get_contents($file)); } else { show_error("致命错误","模板文件未找到!".$file); } } // 设置要显示的内容文件 public function display($template) { $this->file[] = $this->temp_path . $template; return $this; } // 输出模板文件 public function render() { $template = ''; foreach ($this->file as $file) { $template .= $this->compile($file); } return $this->evaluate($template, $this->getVars()); } // 转换成php private function evaluate($code, array $variables = NULL) { if ($variables != NULL) { extract($variables); } return eval('?>' . $code); } } 2. [代码]调用 跳至 [1] [2] [3] [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php require 'view.php'; $view=new view(); //第一种设置输出参数的方法 $view->setAttr("title", "Variable example"); //第二种设置输出参数的方法 $view->array = array( '1' => "First array item", '2' => "Second array item", 'n' => "N-th array item", ); $view->j = 5; //输入页头、内容、页脚 $view->display("header.php")->display('index.php')->display('footer.php')->render();
试试其它关键字
php
模板引擎
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
李朝强
贡献的其它代码
(
10
)
.
异常处理示例
.
小文件解压缩程序
.
Spring MVC自动转换JSON日期
.
php模板引擎
.
struts迭代map并显示值
.
rc4加密解密
.
运用委托手动创建ORM
.
洗牌算法
.
微信公众平台开发人员POSTXML助手
.
Java图片上传代码
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3