构建自己的PHP框架(Twig模板引擎)
2024-08-31 22:56:58
完整项目地址:https://github.com/Evai/Aier
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官网地址。
最新文章
- Vue 过滤器与计算属性
- 第2章 如何构建布局良好的Windows程序
- mvn添加本地jar
- Android之Inflate()
- NOIP2010 关押罪犯 (并查集)
- tomcat服务器启动错误
- ";position:relative";在IE中的Bug
- php json_decode 后,数字对象转换成了 科学计数法 的解决方案
- Ubuntu apache 禁止目录浏览
- The number of divisors(约数) about Humble Numbers
- 按键精灵http.定义getWeb
- HDU 5718 Oracle(高精度)
- 算法录 之 BFS和DFS
- 【Xilinx-Petalinux学习】-05-OpenCV程序测试
- ACE首页更改
- 使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试
- vue elementUI之Form表单 验证
- angular2 学习笔记 ( translate, i18n 翻译 )
- win10无法访问服务器上的共享文件夹怎么设置,提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
- BZOJ5047 空间传送装置 2017年9月月赛 最短路 SPFA
热门文章
- [转载]MVC中单用户登录
- 【Debug】— C++ 表达式必须包含类类型
- php面试题11(边看边复习刚刚讲的)(array_multisort($arr1,$arr2); 用$arr1来排序$arr2。)
- Android onKeyDown监听返回键无效
- c3p0 xml配置文件模版
- js中动态创建json,动态为json添加属性、属性值的实例
- 注册表 Run、RunOnce 浅析
- php中的foreach如何使用?
- vs 错误提示及解决方案
- 【BZOJ 1005】[HNOI2008]明明的烦恼(化简的另一种方法)