盡管 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