Twig for PHP: 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Twig for PHP:Symfony 模板引擎完整指南

\n\n

Twig 是一种为 PHP 语言设计的现代、快速且安全的模板引擎,由 Symfony 团队开发。它为开发者提供了强大且直观的语法,用于将视图逻辑(模板)与应用程序的业务逻辑分离。Twig 解决了 Web 开发中的一个关键问题:将 PHP 代码与 HTML 混合,这会导致“意大利面条式代码”,降低项目的可读性和可维护性。

\n\n

Twig 的主要目标是使模板干净、安全且易于阅读。与纯 PHP 不同,Twig 限制了开发者在模板内执行任意代码,通过自动转义输出来防止典型漏洞,例如 XSS(跨站脚本)攻击。您不再使用复杂的结构 <?php foreach(...): ?>,而是使用简洁的 {% for item in items %};不再使用 <?= $var ?>,而是使用 {{ var }}。这使得模板对于不熟悉 PHP 的网页设计师和前端开发者来说也易于使用。

\n\n

Twig 是 Symfony 框架的事实标准,但它也能很好地与 Laravel(通过 twigbridge 包)、Drupal、WordPress 集成,并且可以作为独立库在任何 PHP 项目中使用。凭借模板继承、宏、沙箱和自动转义等功能,Twig 是 PHP 生态系统中流行的模板引擎之一。

\n\n

安装

\n

通过依赖管理器 Composer 安装 Twig。请确保 Composer 已全局安装。

\n
composer require twig/twig:^3.0
\n

执行命令后,您的项目中会出现 vendor/ 文件夹和包含新增依赖的 composer.json 文件。使用标准文件 vendor/autoload.php 进行类的自动加载。

\n\n

快速入门:最小工作示例

\n

创建一个简单的模板并显示它。项目结构:

\n
project/\n├── templates/\n│   └── hello.html.twig\n├── vendor/\n└── index.php
\n\n

模板:templates/hello.html.twig

\n
<!DOCTYPE html>\n<html>\n<head>\n    <title>问候</title>\n</head>\n<body>\n    <h1>你好,{{ name }}!</h1>\n    <p>今天是 {{ "now"|date("d.m.Y") }}。</p>\n</body>\n</html>
\n\n

PHP 脚本:index.php

\n
<?php\nrequire_once 'vendor/autoload.php';\n\nuse Twig\\Environment;\nuse Twig\\Loader\\FilesystemLoader;\n\n// 1. 创建一个指向模板文件夹的加载器\n$loader = new FilesystemLoader('templates');\n\n// 2. 创建 Twig 环境\n$twig = new Environment($loader, [\n    'cache' => 'cache', // 缓存路径(推荐)\n    'auto_reload' => true, // 文件更改时自动重新加载(用于开发)\n]);\n\n// 3. 渲染模板,传递变量\necho $twig->render('hello.html.twig', ['name' => '世界']);\n?>
\n

在浏览器中打开 index.php。您将看到一个标题为“你好,世界!”并显示当前日期的页面。

\n\n

Twig 的主要方法和函数

\n

以下是构成 Twig 工作基础的关键方法和结构。

\n\n

1. Environment::render() — 渲染模板

\n

签名: public function render(string $name, array $context = []): string

\n

描述: 显示模板的主要方法。接受模板文件名(相对于加载器根目录)和一个关联数组变量(上下文),这些变量将在模板内可用。

\n
<?php\n//                    

推荐