网站CMS标签是怎么转化成PHP代码的?
比如帝国、齐博,他们的标签是通过cms里面的什么编译器,还是哪种方式,转换成PHP代码的?小生非常困惑,给予的解答,不胜感激!!...
比如帝国、齐博,他们的标签是通过cms里面的什么编译器,还是哪种方式,转换成PHP代码的?小生非常困惑,给予的解答,不胜感激!!
展开
展开全部
哈哈,没你想的复杂的。其实原理很简单,把{}里面的或者配置好的界边符里面的代码,用正则的方式给替换成了PHP代码,从而生成了个临时文件,这个文件是混合的PHP文件,HTML,PHP代码都在里面。然后输出出来。这是目前MVC通用方式。
/**
* 解析和获取模板内容 用于输出
* @access public
* @param string $templateFile 模板文件名
* @param string $content 模板输出内容
* @param string $prefix 模板缓存前缀
* @return string
*/
public function fetch($templateFile='',$content='',$prefix='') {
if(empty($content)) {
$templateFile = $this->parseTemplate($templateFile);
// 模板文件不存在直接返回
if(!is_file($templateFile)) E(L('_TEMPLATE_NOT_EXIST_').':'.$templateFile);
}else{
defined('THEME_PATH') or define('THEME_PATH', $this->getThemePath());
}
// 页面缓存
ob_start();
ob_implicit_flush(0);
if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { // 使用PHP原生模板
$_content = $content;
// 模板阵列变量分解成为独立变量
extract($this->tVar, EXTR_OVERWRITE);
// 直接载入PHP模板
empty($_content)?include $templateFile:eval('?>'.$_content);
}else{
// 视图解析标签
$params = array('var'=>$this->tVar,'file'=>$templateFile,'content'=>$content,'prefix'=>$prefix);
Hook::listen('view_parse',$params);
}
// 获取并清空缓存
$content = ob_get_clean();
// 内容过滤标签
Hook::listen('view_filter',$content);
// 输出模板文件
return $content;
}
追问
谢谢!那生成的这个临时文件,是不是用户浏览的时候就生成,web服务器响应一次后就清除?
追答
饿,不会清除,只要生成了就会一直在。当你重新写模板的时候,执行一下就会更新。相当于看不见的第三方。中间要过一下他。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |