我们的框架已经相当完善了
那么我们的php视图层在数据渲染的时候还是需要大量的php标签来完成
这样对于使用这个框架但不懂php语言的前端工程师来说 是一件非常糟糕的体验
为了解决这个问题 我们有了模板引擎这个概念
我们首先看看使用模板引擎的好处
1.安全,比如默认转义输出
2.规范,防止团队中有人在视图中写大量的逻辑代码
3.性能,据说可以提高性能
4.可读,个人认为twig或者laravel的blade引擎比php可读性好
那模板引擎的好处这么多 我们如何让我们的框架使用模板引擎呢
接下来我们就来为我们的框架加载一个 twig模板引擎
首先在我们的composer.json当中添加一行
"twig/twig":"*"
跟之前的一样
然后执行命令行
composer update
我们的twig引擎就让composer 自动安装好了
那么 怎么用呢
首先我们重写一下我们之前写的display方法
public function display($file)
{
$file = APP . '/views/' . $file;
if(is_file($file))
{
\Twig_Autoloader::register();
$loader = new \Twig_Loader_Filesystem(APP."/views");
$twig = new \Twig_Environment($loader, array(
'cache' => IMOOC.'/log/twig',
'debug' => DEBUG
));
$template = $twig->loadTemplate('index.html');
$template->display($this->assign?$this->assign:'');
}
}
然后在控制器中加入如下代码
$data = "Hello world";
$this->assign("data",$data);
$this->display("index.html");
视图层我们使用模板引擎
{{ data }}
就可以输出我们的变量了
接着我们来引入一个layout 视图公共部分
<html>
<body>
<header>header</header>
<content>
{% block content %}
{% endblock %}
</content>
<footer>footer</footer>
</body>
</html>
然后我们在需要引入layout视图文件的地方
`
{% extends "layout.html" %}
{% block content %}
{{ data }}
{% endblock %}
继承那个视图
这样的们的twig模板引擎就完成了
我们的框架也相当完善了`