框架入门 中级篇 (中)twig模板引擎

来源:互联网 发布:数据库事务特性 编辑:程序博客网 时间:2024/06/05 01:32

我们的框架已经相当完善了

那么我们的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模板引擎就完成了

我们的框架也相当完善了`

0 0