构建自己的PHP框架(Twig模板引擎)
完整项目地址:https://github.com/Evai/Aier
Twig 模板引擎
安装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官网地址。
构建自己的PHP框架(Twig模板引擎)的更多相关文章
- SSTI(以Twig模板引擎为例)
一.模板注入与常见Web注入 就注入类型的漏洞来说,常见 Web 注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等.注入漏洞的实质是服务端接受了用户的输入,未 ...
- opencart 引入 TWIG 模板引擎
1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...
- 原生twig模板引擎详解(安装使用)
最近在学习SSTI(服务器模板注入),所以在此总结一下 0x00 Twig的介绍 什么是Twig? Twig是一款灵活.快速.安全的PHP模板引擎. Twig的特点? 快速:Twig将模板编译为纯粹的 ...
- yii2 使用twig 模板引擎
yii2 默认使用PHP 和html 混合的方式来写视图层,但我个人还是喜欢纯模板语言的方式.而且已经非常习惯使用twig的语法,最近想使用yii2进行开发,所以还是选择使用twig视图引擎. git ...
- twig 模板引擎使渲染视图更加优雅
在使用 laravel 的时候接触过 blade 模板引擎.在学习的时候,接触到了另外一个强大的模板引擎:twig 官网:https://twig.sensiolabs.org/ 中文手册:http: ...
- web框架--tornado框架之模板引擎
使用Tornado实现一个简陋的任务表功能demo来讲解tornado框架模板引擎 一.demo目录结构 二.具体文件内容 2.1.commons.css .body{ margin: 0; back ...
- symfony2 twig模板引擎
1.基本语法 Says something:{{ }} Does something:{% %} Comment something:{# #} {% extends "App ...
- web框架--tornado框架之模板引擎继承
使用模板的继承可以重复使用相同结构的模板, 可以大大减少代码量 入门实例 一.demo目录结构 注解: master.html为模板内容,被index.html,account.html引用 二.各文 ...
- Tornado框架配置使用Jinja2模板引擎
安装jinja2包 pip install jinja2 定义继承tornado.web.RequestHandler的子类BaseHandler.如果请求处理类继承这个类将会使用jinja模板引擎: ...
随机推荐
- thinkphp5 tp5 获取模块名控制器名方法名
<?php namespace app\index\controller; use think\Db; use think\Controller; class Base extends Cont ...
- 如何在电脑上播放iso映像文件
http://blog.sina.com.cn/s/blog_4a20485e0102e5ya.html
- andorid 自己定义SwitchButton
因项目缘故需又一次定制SwitchButton,效果例如以下: 步骤例如以下: 1.圆角矩形的绘制 2.字体绘制 3.小圆绘制 4.左右滑动动画效果绘制 代码例如以下: package com.s ...
- ios开发知识点补充
一:self class,self superClass super class super superClass 的区别 新建SubPerson继承person,在SubPerson中打印如下: ...
- 指针知识梳理6-const与指针
const 定义的变量为仅仅读变量.在语法层面上通过这个变量去改动内存是不同意的. 可是对于下面代码.就有非常多人绕了: const int *p1; //p1能变.*p1不能变 int cons ...
- AngularJS之watch
简介 首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法. 在digest执行时,如果watch观察的的value与上一次执 ...
- NetSnmp配置
http://blog.csdn.net/shanzhizi/article/details/16985989
- JAVA中String类的intern()方法的作用
一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) t ...
- GTID的限制
1.不支持非事务引擎(从库报错,stop slave;start slave;忽略). 2.不支持create table ... select 语句复制(主库直接报错). 3.不允许一个SQL同时更 ...
- iOS开发- Xcode插件- 规范凝视生成器VVDocumenter 自己的见解
xcode升级 VVDocumenter 插件失效怎么办?? 首先给个完整的安装參考:http://www.th7.cn/Program/IOS/201405/212030.shtml 參考这个能 ...