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

Twig 模板引擎

模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以。模板内的 变量 和 表达式 会在运行的时候被解析替换,标签(tags)会来控制模板的逻辑。

安装Twig

命令行运行:

composer require "twig/twig:~1.0"

在services目录下创建Twig.php:

<?php

/**
 * Class Twig
 */
class Twig
{
    public $view;

    public $data;

    public $twig;

    public $path = BASE_PATH . ‘/app/Views/‘;

    /**
     * Twig constructor.
     * @param $view
     * @param $data
     */
    public function __construct($view, $data)
    {
        $loader = new Twig_Loader_Filesystem($this->path);

        $this->twig = new Twig_Environment($loader, array(
            ‘cache‘ => BASE_PATH . ‘/cache/views/‘,
            ‘debug‘ => true
        ));

        $this->view = $view;
        $this->data = $data;

    }

    /**
     * @param $view
     * @param array $data
     * @return Twig
     */
    public static function render($view, $data = array())
    {

        return new Twig($view, $data);

    }

    public function __destruct()
    {
        $this->twig->display($this->view, $this->data);
    }
}

执行命令:

composer dump-autoload

在app/Views/ 下分别创建一个app.twig文件和index.twig 文件(.html文件也是可以的):

{#app.twig#}

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

<body>

<header>header</header>

{% block content %}

{% endblock %}

<footer>footer</footer>

</body>
</html>
{#index.twig#}
{% extends ‘app.twig‘ %}
{% block content %}

hello {{ data.name }}, your mobile is {{ data.mobile }}

{% endblock %}

在控制器中添加:

$data = [‘data‘ => [‘name‘ => ‘evai‘, ‘mobile‘ => 12345678910]];

return Twig::render(‘index.twig‘, $data);

刷新浏览器,可以看到显示如下页面:

详细文档请参考twig官网地址

时间: 2024-08-05 07:06:36

构建自己的PHP框架(Twig模板引擎)的相关文章

opencart 引入 TWIG 模板引擎

1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'library/Twig-1.12.3/lib/Twig/Autoloader.php'); 3.在 index.php 文件中,加入twig引擎初始化语句. //twig Twig_Autoloader::register(); $twigLoader = new Twig_Loader_Filesyst

yii2 使用twig 模板引擎

yii2 默认使用PHP 和html 混合的方式来写视图层,但我个人还是喜欢纯模板语言的方式.而且已经非常习惯使用twig的语法,最近想使用yii2进行开发,所以还是选择使用twig视图引擎. github 已经有人提供了这样的vendor ,可以直接comoser 配置一下进行使用. composer.json 文件 require 添加 "yiisoft/yii2-twig": "*" 然后 composer update  前往common/config 下

laravel框架(blade模板引擎)

## 1.基本用法 ```##情形1  $name = laravel5<div class="title"> {{$name}}  {{$name}}</div>//输出结果是  larave5  larave5 ##情形2  $name = laravel5  并且使用@的情形<div class="title"> {{$name}}  @{{$name}}</div>//输出结果是  larave5{{$name

web框架--tornado框架之模板引擎

使用Tornado实现一个简陋的任务表功能demo来讲解tornado框架模板引擎 一.demo目录结构 二.具体文件内容 2.1.commons.css .body{ margin: 0; background-color: bisque; } 2.2.index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

symfony2 twig模板引擎

1.基本语法 Says something:{{    }} Does something:{%  %} Comment something:{#    #} {% extends "AppWebBundle::layout.html.twig" %}继承模板 2.核心概念: 用类的继承关系去管理页面之间的关系 如果要访问某个bundle里的资源文件,需要将文件拷贝到/web 目录下,或者linux/mac 软连接映射到/web目录下 windows:  >php app/con

web框架--tornado框架之模板引擎继承

使用模板的继承可以重复使用相同结构的模板, 可以大大减少代码量 入门实例 一.demo目录结构 注解: master.html为模板内容,被index.html,account.html引用 二.各文件代码 2.1.master.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Maste

Tornado框架配置使用Jinja2模板引擎

安装jinja2包 pip install jinja2 定义继承tornado.web.RequestHandler的子类BaseHandler.如果请求处理类继承这个类将会使用jinja模板引擎:如果请求处理类继承tornado.web.RequestHandler,则会使用Tornado框架的模板引擎. 1 import os 2 3 from jinja2 import Environment, FileSystemLoader, TemplateNotFound 4 from torn

前后端模板引擎

页面模板化,直接加载json,循环替换即可,把页面变成js模板,加载json,生成页面即可 JS模板,前端模板引擎 把JS获取到的接口数据重新放进页面,进行数据更新 php模板引擎: feather view http://feather-team.github.io/blade是laravel提供的模板引擎http://www.golaravel.com/laravel/docs/5.1/blade/ laravel框架 java模板引擎:freemarker 前端模板引擎artTemplat

nodejs学习(二) ---- express中使用模板引擎jade

系列教程,上一节教程  express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.jade 和 footer.jade,下面教程会一步步创建) 页面解析出的样子如下图.完全是html标签 一.jade 模板引擎 介绍 模板引擎是一个库,或者一个使用一定的规则或者语言来解释数据并渲染视图的框架.模板引擎处理过的最终结果是一个视图页面,也就是html页面或者用户图形界面GUI.在MVC