摘要:原理使用模板引擎的好处是数据和视图分离。对于循环语句怎么办呢这个的话,请看流程控制的替代语法
原理
使用模板引擎的好处是数据和视图分离。一个简单的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模板测试 =$name?>
为什么display要返回一个字符串呢?原因是为了更好的控制,嵌入到控制器类中。
对于循环语句怎么办呢?这个的话,请看流程控制的替代语法
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26083.html
改进 紧接上一篇文章Just for fun——PHP框架之简单的路由器(1)。代码下载 效率不高原因 对于以下合并的正则 ~^(?: /user/([^/]+)/(d+) | /user/(d+) | /user/([^/]+) )$~x 最终匹配的是分组中的某一个,我们需要的子匹配也是那个分组中的,然而从结果看 preg_match($regex, /user/niki...
摘要:的话,是一个遵循规范微型的框架,作者这样说大致意思的核心工作分发了请求,然后调用回调函数,返回一个对象。执行的方法时,我们从中取出的依赖,这时候,注册的回调函数被调用,返回实例。 Slim Slim的话,是一个遵循PSR (PSR-7)规范微型的框架,作者这样说: Slim is a PHP micro framework that helps you quickly write si...
摘要:路由路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。 路由 路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。接下来呢,我们实现一个简单的路由器,实现的能力是 对于静态的路由(没占位符的),正确调用callback 对于有占位符的路由,正确调用callback时传入占位符参数,譬如对于路由:/user/{id},当请求为/user/23时,传入参数$args...
摘要:总之,是用来管理多个容器的,用都会写一个开启所有服务关闭所有服务上面说了,关键是编排好,以下就是的目录结构访问在目录下运行命令,在浏览器访问可以看到讲解和都是用了官方的镜像,而是从本地构建的。 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,...
阅读 1452·2019-08-30 15:55
阅读 1121·2019-08-30 15:52
阅读 1250·2019-08-29 13:53
阅读 1434·2019-08-29 11:19
阅读 2929·2019-08-26 13:29
阅读 508·2019-08-26 11:33
阅读 2552·2019-08-23 17:20
阅读 1000·2019-08-23 14:14