尽管 PHP 不断升级为成熟的、面向对象的语言,但它作为模板语言 [没有改善多少](http://fabien.potencier.org/article/34/templating-engines-in-php)。编译模板,比如 [Twig](http://twig.sensiolabs.org/) 或 [Smarty](http://www.smarty.net/)* ,提供了模板专用的新语法,填补了这片空白。从自动转义到继承以及简化控制结构,编译模板设计地更容易编写,可读性更高,同时使用上也更加的安全。编译模板甚至可以在不同的语言中使用,[Mustache](http://mustache.github.io/) 就是一个很好的例子。由于这些模板需要编译,在性能上会带来一些轻微的影响,不过如果适当的使用缓存,影响就变得非常小了。
*虽然 Smarty 提供了自动转义的功能, 不过这个功能默认是关闭的
### 编译模板简单示例
使用 [Twig ](http://twig.sensiolabs.org/)类库。
~~~
{% include 'header.html' with {'title': 'User Profile'} %}
<h1>User Profile</h1>
<p>Hello, {{ name }}</p>
{% include 'footer.html' %}
~~~
### 编译模板使用继承示例
使用 [Twig ](http://twig.sensiolabs.org/)类库。
~~~
// template.html
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
~~~
~~~
// user_profile.html
{% extends "template.html" %}
{% block title %}User Profile{% endblock %}
{% block content %}
<h1>User Profile</h1>
<p>Hello, {{ name }}</p>
{% endblock %}
~~~
- 欢迎
- 入门指南
- 使用当前稳定版本
- 内置的WEB服务器
- Mac安装
- Windows安装
- 代码风格指南
- 语言亮点
- 编程范式
- 命名空间
- PHP标准库
- 命令行接口
- Xdebug
- 依赖管理
- Composer 与 Packagist
- PEAR
- 开发实践
- 基础知识
- 日期和时间
- 设计模式
- 使用UTF8编码
- 依赖注入
- 基本概念
- 复杂的问题
- 容器
- 延伸阅读
- 数据库
- MYSQL 扩展
- PDO 扩展
- 数据库交互
- 数据库抽象层
- 使用模板
- 好处
- 原生PHP模板
- 编译模板
- 延伸阅读
- 错误与异常
- 错误
- 异常
- 安全
- Web应用程序安全
- 密码哈希
- 数据过滤
- 配置文件
- 注册全局变量
- 错误报告
- 测试
- 测试驱动开发
- 行为驱动开发
- 其他测试工具
- 服务器与部署
- Platform as a Service (PaaS)
- 虚拟或专用服务器
- 共享服务器
- 构建及部署应用
- 虚拟化
- Vagrant
- Docker
- 缓存
- Opcode缓存
- 对象缓存
- 文档撰写
- 资源
- 社区
- Credits