构建自己的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模板引擎: ...
随机推荐
- 【2006】求N!的精确值
Time Limit: 3 second Memory Limit: 2 MB 对于阶乘函数,即使自变量较小,其函数值也会相当大.例如: 10!=3628800 25!=155112100433309 ...
- ios开发网络学习六:设置队列请求与RunLoop
#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> ...
- 阿里云服务器安全设置 分类: B3_LINUX 2014-07-24 11:10 5197人阅读 评论(1) 收藏
1.开启云盾所有服务 2.通过防火墙策略限制对外扫描行为 请您根据您的服务器操作系统,下载对应的脚本运行,运行后您的防火墙策略会封禁对外发包的行为,确保您的主机不会再出现恶意发包的情况,为您进行后续数 ...
- 线上java排查
http://www.oschina.net/question/560995_137855?sort=default&p=3#answers http://www.blogjava.net/h ...
- [Docker] Create a Volume
We can create volumn to keep the data, even we stop the container and restart again, the data won't ...
- Colder框架硬核更新(Sharding+IOC)
目录 引言 控制反转 读写分离分库分表 理论基础 设计目标 现状调研 设计思路 实现之过五关斩六将 动态对象 动态模型缓存 数据源移植 查询表达式树深度移植 数据合并算法 事务支持 实际使用 展望未来 ...
- HPE Comware Lab - Simulator
http://h20565.www2.hpe.com/hpsc/swd/public/readIndex?sp4ts.oid=7107838&ac.admitted=1405352934644 ...
- base64码通过http传输 +号变 空格 问题解决
通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...
- Android中蓝牙的基本使用----BluetoothAdapter类简介
天气逐渐热了,自己也越来越懒了,虽然看着了很多东西,解决了很多问题,有些收获却不想写着.主要有一下两方面原因: 第一.以前写的一些关于Android知识的Blog,都是在学习过程中发现网络上没有相关知 ...
- idea中建立一个OSGI项目
参考网址:http://chenjingbo.iteye.com/blog/1893597 首先我使用的是equinox作为我的osgi framework 直接在官网上解压下载即可,第一步creta ...