网站CMS标签是怎么转化成PHP代码的?

比如帝国、齐博,他们的标签是通过cms里面的什么编译器,还是哪种方式,转换成PHP代码的?小生非常困惑,给予的解答,不胜感激!!... 比如帝国、齐博,他们的标签是通过cms里面的什么编译器,还是哪种方式,转换成PHP代码的?小生非常困惑,给予的解答,不胜感激!! 展开
 我来答
软件开发枫老师
2018-04-17 · TA获得超过585个赞
知道小有建树答主
回答量:599
采纳率:63%
帮助的人:320万
展开全部

哈哈,没你想的复杂的。其实原理很简单,把{}里面的或者配置好的界边符里面的代码,用正则的方式给替换成了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服务器响应一次后就清除?
追答
饿,不会清除,只要生成了就会一直在。当你重新写模板的时候,执行一下就会更新。相当于看不见的第三方。中间要过一下他。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式