资讯专栏INFORMATION COLUMN

Just for fun——PHP框架之简单的模板引擎

X1nFLY / 2343人阅读

摘要:原理使用模板引擎的好处是数据和视图分离。对于循环语句怎么办呢这个的话,请看流程控制的替代语法

原理

使用模板引擎的好处是数据和视图分离。一个简单的PHP模板引擎原理是

extract数组($data),使key对应的变量可以在此作用域起效

打开输出控制缓冲(ob_start)

include模板文件,include遇到html的内容会输出,但是因为打开了缓冲,内容输出到了缓冲中

ob_get_contents()读取缓冲中内容,然后关闭缓冲ob_end_clean()

实现

封装一个Template

templatePath = $path;
    }

    /**
     * 设置模板变量
     * @param $key string | array
     * @param $value
     */
    public function assign($key, $value) {
        if(is_array($key)) {
            $this->data = array_merge($this->data, $key);
        } elseif(is_string($key)) {
            $this->data[$key] = $value;
        }
    }


    /**
     * 渲染模板
     * @param $template
     * @return string
     */
    public function display($template) {
        extract($this->data);
        ob_start();
        include ($this->templatePath . $template);
        $res = ob_get_contents();
        ob_end_clean();
        return $res;
    }

}
测试

test.php

setTemplatePath(__DIR__ . "/template/");
 $template->assign("name", "salamander");
 $res = $template->display("index.html");


 echo $res;

template目录下index.html文件




    
    模板测试
    


    

Tip

为什么display要返回一个字符串呢?原因是为了更好的控制,嵌入到控制器类中。
对于循环语句怎么办呢?这个的话,请看流程控制的替代语法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26083.html

相关文章

  • Just for fun——PHP框架简单路由器(2)

    改进 紧接上一篇文章Just for fun——PHP框架之简单的路由器(1)。代码下载 效率不高原因 对于以下合并的正则 ~^(?: /user/([^/]+)/(d+) | /user/(d+) | /user/([^/]+) )$~x 最终匹配的是分组中的某一个,我们需要的子匹配也是那个分组中的,然而从结果看 preg_match($regex, /user/niki...

    tomato 评论0 收藏0
  • Just for fun——Slim借力Swoole

    摘要:的话,是一个遵循规范微型的框架,作者这样说大致意思的核心工作分发了请求,然后调用回调函数,返回一个对象。执行的方法时,我们从中取出的依赖,这时候,注册的回调函数被调用,返回实例。 Slim Slim的话,是一个遵循PSR (PSR-7)规范微型的框架,作者这样说: Slim is a PHP micro framework that helps you quickly write si...

    leejan97 评论0 收藏0
  • Just for fun——PHP框架简单路由器(1)

    摘要:路由路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。 路由 路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。接下来呢,我们实现一个简单的路由器,实现的能力是 对于静态的路由(没占位符的),正确调用callback 对于有占位符的路由,正确调用callback时传入占位符参数,譬如对于路由:/user/{id},当请求为/user/23时,传入参数$args...

    smallStone 评论0 收藏0
  • Just for fun——Docker做个NMP环境

    摘要:总之,是用来管理多个容器的,用都会写一个开启所有服务关闭所有服务上面说了,关键是编排好,以下就是的目录结构访问在目录下运行命令,在浏览器访问可以看到讲解和都是用了官方的镜像,而是从本地构建的。 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,...

    用户84 评论0 收藏0

发表评论

0条评论

X1nFLY

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<