在使用 laravel 的时候接触过 blade 模板引擎。在学习的时候,接触到了另外一个强大的模板引擎:twig

官网:https://twig.sensiolabs.org/

中文手册:http://download.csdn.net/detail/chenmoimg_/9840505

一、首先我们使用 composer 下载下来

这是 composer.json 的内容:

{
  "name":"test",
  "description":"easy test",
  "keywords":[
    "easy","test"
  ],
  "require":{
    "php":">= 5.3.0",
    "twig/twig":"*"
  },
  "repositories":{
    "packagist":{
      "type":"composer",
      "url":"https://packagist.phpcomposer.com"
    }
  }
}

  • cmd 进入到此文件目录,composer install 回车运行。
  • 在此文件目录就会多了一个 《vendor》目录,我们的 twig 就在此目录里

二、简单使用 twig

Controller.php 内容:

<?php
class Controller{
    //存储模板页面值。
    protected $assign;
    /***
     * @ 模板页面赋值。
     * @param $name
     * @param $value
     */
    public function assign($name,$value)
    {
        $this->assign[$name]=$value;
    }
    /***
     * @ 渲染模板。
     * @param $view
     */
    public  function display($view){
        #当前项目所在目录
        $dir=str_replace("\\","/",__DIR__);
        #视图文件存在的路径
        $file=$dir.'/views/'.$view;
        #判断渲染视图是否存在
        if(file_exists($file)){
            #要想使用 composer 下载的包,要先引入此文件。
            include $dir."/vendor/autoload.php";
            #让 twig 加载视图文件目录
            $loader = new \Twig_Loader_Filesystem($dir.'/views');
            $twig = new \Twig_Environment($loader);
            #加载渲染的页面
            $template = $twig->load($view);
            #输出模板值
            echo $template->render($this->assign?$this->assign:'');
        }
    }
}
//文件结束。

IndexController.php 内容:

<?php
include 'Controller.php';

class IndexController extends Controller{
    public function index(){
        $title="我是标题";
        $this->assign("title",$title);
        $this->display("views.html");
    }
}
(new IndexController())->index();
//文件结束。

然后我们在 views 目录创建 views.html

views.html 内容:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
{{title}}
</body>
</html>

结束。

twig 模板引擎使渲染视图更加优雅的更多相关文章

  1. SSTI(以Twig模板引擎为例)

    一.模板注入与常见Web注入 就注入类型的漏洞来说,常见 Web 注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等.注入漏洞的实质是服务端接受了用户的输入,未 ...

  2. opencart 引入 TWIG 模板引擎

     1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...

  3. node(基础)_node.js中的http服务以及模板引擎的渲染

    一.前言 本节的内容主要涉及: 1.node.js中http服务 2.node.js中fs服务 3.node.js中模板引擎的渲染 4.利用上面几点模拟apache服务器 二.知识 1.node.js ...

  4. 构建自己的PHP框架(Twig模板引擎)

    完整项目地址:https://github.com/Evai/Aier Twig 模板引擎 模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以 ...

  5. MVVM 和 VUE三要素:响应式、模板引擎、渲染

    MVVM 和 VUE三要素:响应式.模板引擎.渲染:https://blog.csdn.net/weixin_37644989/article/details/94409430

  6. 原生twig模板引擎详解(安装使用)

    最近在学习SSTI(服务器模板注入),所以在此总结一下 0x00 Twig的介绍 什么是Twig? Twig是一款灵活.快速.安全的PHP模板引擎. Twig的特点? 快速:Twig将模板编译为纯粹的 ...

  7. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  8. 用模板引擎Art-Template渲染空格或换行符引发的一场“命案”

    一.绪论 说实话,真的不知道如何给这篇博客命名,因为我觉得应该有一些小伙伴遇到跟我同样的问题正在抓耳挠腮中. 二.导火索 最近在做一个移动H5翻页的功能,类似于MAKA模板那种.假设大致框架如下 ​ ...

  9. yii2 使用twig 模板引擎

    yii2 默认使用PHP 和html 混合的方式来写视图层,但我个人还是喜欢纯模板语言的方式.而且已经非常习惯使用twig的语法,最近想使用yii2进行开发,所以还是选择使用twig视图引擎. git ...

随机推荐

  1. nyoj--514--1的个数(贪心)

     1的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a ...

  2. nyoj--55--懒省事的小明(STL优先队列)

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分 ...

  3. .net core @Html 自定义属性中包含特殊符号解决

    最近自己在练手项目用到了VUE 绑定属性的时候发现 有: -符号 这样显然是不支持的.之前发现 v-on  这种-符号也是不支持的 但是可用 @v_on 替代.可是找遍了所有资料也没找到:转义符 当时 ...

  4. Win7 利用批处理文件结束进程

    @echo offtitle 结束进程正在进行... ::结束进程TeamViewer.exewmic process where name="TeamViewer.exe" ca ...

  5. SQL控制语句基础

    SQL变量 全局变量: 全局变量是由系统定义和维护的使用两个@作为前缀,不能由用户声明和赋值! 常用的全局变量如下 @@version :获取当前使用的SQL Server版本号 EG: select ...

  6. js小知识 delete操作符

    说明:delete操作符用于删除对象的某个属性. 语法: delete object.property //删除 对象.属性 delete object['property'] //删除 对象['属性 ...

  7. 再次建立wordpress

    山大的火星人的站还在维护www.h4ck.org.cn. 也许是募课潮过后的效应,www时代还能聚合很多知识,到了客户端时代技术越发松散,很难发实用的技术总结. 如果重新审视问题不难发现,问题在于使用 ...

  8. 【原创】Apache和Tomcat实现动静分离

    集群中每个节点都启用了页面静态化功能,所以,为了防止单个节点刷新造成找不到页面问题,将每个节点刷新的页面都放入apache虚拟目录下,由apache统一来处理.静态页面由apache处理,动态页面仍然 ...

  9. LCD中如何描绘点阵数据

    下载软件“液晶汉字点阵zimo21” 描绘数据 打开软件后,新建图像-取模方式选择C51(A51和C51区别就是,A-F开头要加0,例如0x0AF)-模拟动画中放大格点-描绘图像-点阵生成区 对获得数 ...

  10. Set集合[HashSet,TreeSet,LinkedHashSet],Map集合[HashMap,HashTable,TreeMap]

    ------------ Set ------------------- 有序: 根据添加元素顺序判定, 如果输出的结果和添加元素顺序是一样 无序: 根据添加元素顺序判定,如果输出的结果和添加元素的顺 ...