当前位置: 网学 > 编程文档 > PHP > 正文

PHP中MVC模式的模板引擎开发经验分享

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/21
unction SetPanelTags() {
$rule = $this->bTag.''([^''.$this->eFlag.'']+)\/''.$this->eFlag;
preg_match_all(''/''.$rule.''/ism'', $this->html, $out_matches);
$this->TransTag($out_matches, ''panel''); unset($out_matches);
}
private function SetTrunkTags() {
$rule = $this->bTag.''(\w+)\s*([^''.$this->eFlag.'']*?)''.$this->eFlag.
''((?:(?!''.$this->bTag.'')[\S\s]*?|(?R))*)''.$this->eTag.''\\1\s*''.$this->eFlag;
preg_match_all(''/''.$rule.''/ism'', $this->html, $out_matches);
$this->TransTag($out_matches, ''trunk''); unset($out_matches);
}
private function TransTag($result, $type) {
if (!empty($result[0])) {
switch ($type) {
case ''panel'' : {
for ($i = 0; $i < count($result[0]); $i ++) {
$strTag = explode('' '', $result[$i], 2);
if (strpos($strTag[0], ''.'')) {
$itemArg = explode(''.'', $result[$i], 2);
$callFunc = Tags::$prefix.ucfirst($itemArg[0]);
if (method_exists(''Tags'', $callFunc)) {
$html = Tags::$callFunc(chop($itemArg));
if ($html !== false) {
$this->html = str_ireplace($result[0][$i], $html, $this->html);
}
}
} else {
$rule = ''^([^\s]+)\s*([\S\s]+)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
';
preg_match_all(''/''.$rule.''/is'', trim($result[$i]), $tmp_matches);
$callFunc = Tags::$prefix.ucfirst($tmp_matches[0]);
if (method_exists(''Tags'', $callFunc)) {
$html = Tags::$callFunc($tmp_matches[0]);
if ($html !== false) {
$this->html = str_ireplace($result[0][$i], $html, $this->html);
}
} unset($tmp_matches);
}
} break;
}
case ''trunk'' : {
for ($i = 0; $i < count($result[0]); $i ++) {
$callFunc = Tags::$prefix.ucfirst($result[$i]);
if (method_exists(''Tags'', $callFunc)) {
$html = Tags::$callFunc($result[$i], $result[$i]);
$this->html = str_ireplace($result[0][$i], $html, $this->html);
}
} break;
}
default: break;
}
} else {
return false;
}
}
private function RegHatchVars() {
$this->SetPanelTags();
}
function __destruct() {}
}
?>

标签解析类:(目前暂时提供data、list两种标签的解析,说明思路)
复制代码 代码如下:
<?php
/*
* class: 标签解析类
* author: 51JS.COM-ZMM
* date: 2011.3.2
* email: 304924248@qq.com
* blog: http://www.cnblogs.com/cnzmm/
*/
class Tags {
static private $attrs=null;
static public $file, $vars, $rule, $prefix=''TAG_'';
static public function TAG_Syntax($html, $that) {
$rule = $that->bTag.''if\s+([^''.$that->eFlag.'']+)\s*''.$that->eFlag;
$html = preg_replace(''/''.$rule.''/ism'', ''<?php if (\\1) { ?>'', $html);
$rule = $that->bTag.''elseif\s+([^''.$that->eFlag.'']+)\s*''.$that->eFlag;
$html = preg_replace(''/''.$rule.''/ism'', ''<?php } elseif (\\1) { ?>'', $html);
$rule = $that->bTag.''else\s*''.$that->eFlag;
$html = preg_replace(''/''.$rule.''/ism'', ''<?php } else { ?>'', $html);
$rule = $that->bTag.''loop\s+(\S+)\s+(\S+)\s*''.$that->eFlag;
$html = preg_replace(''/''.$rule.''/ism'', ''<?php foreach (\\1 as \\2) { ?>'', $html);
$rule = $that->bTag.''loop\s+(\S+)\s+(\S+)\s+(\S+)\s*''.$that->eFlag;
$html = preg_replace(''/''.$rule.''/is
上一页12345下一页
点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: PHP面向接口编程 耦合设计模式 简单范例
  • 下一篇资讯: 常见的PHP五种设计模式小结
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号