构建自己的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模板引擎: ...
随机推荐
- 【29.42%】【POJ 1182】食物链
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64875 Accepted: 19085 Description 动物王国中有三 ...
- Lucene学习总结之七:Lucene搜索过程解析 2014-06-25 14:23 863人阅读 评论(1) 收藏
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...
- 字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)
1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const ch ...
- Golang快速入门
Go语言简介: Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian L ...
- iOS中html5的交互:WebViewJavascriptBridge
https://github.com/marcuswestin/WebViewJavascriptBridge Setup & Examples (iOS & OSX) Start w ...
- NSURLSession网络接口
URLSession URLSession NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的. 当程序在前台时,NSURLSession与NSURLConne ...
- 自己动手编写一个VS插件(八)
作者:朱金灿 来源:http://blog.csdn.net/clever101 利用业余时间继续开发一个VS插件.我要开发的插件是一个代码库插件,主要是用于积累我平时要使用的代码.在之前我已经实现了 ...
- oracle数据库零散知识01
1,rownum 是一个虚列,使用时必须包括1才能使用,rownum = 1,rownum < 10; rownum = 2是不可以的: 2,if case loop 要加end结束,end ...
- shell配置java环境变量和批处理配置环境变量
linux配置java环境只需在/etc/profile中添加以下 前提是把jdk解压到/usr/local路径,当然路径可以随便改 export JAVA_HOME=/usr/local/jdk1. ...
- C#委托之个人理解
C#委托之个人理解 什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西. 如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它.即先 ...