关于树枝
Twig 是一个为 PHP 设计的现代模板引擎,对设计人员和开发人员都很友好。 它是构建 Web 应用程序表示逻辑的 PHPTemplate 方法的一个非常好的替代方案,因为它代表了更清晰的模板体验。 在这方面,它带有一种非常容易理解的语法,并限制您在模板文件中执行动态 PHP 操作,这是您不应该做的。
如果您喜欢使用 PHP 框架来构建 Web 应用程序,您应该查看 Symfony2,因为它默认安装了 Twig。 这个网站上有几个关于安装和使用 Symfony2 的教程,所以你也可以继续查看它们。
在本教程中,我们将了解如何在 VPS 上安装 Twig 并开始使用它。 为此,我们假设您已经在运行自己的云服务器,最好是基于 Linux 的。 我们将使用已经安装的 LAMP 堆栈,尽管本教程中不会真正使用该数据库。 Twig 需要 PHP 5.2.4 或更高版本才能运行,并且您也可以使用 Apache 以外的其他 Web 服务器。
为什么是树枝?
或者为什么要使用模板引擎? 很简单:关注点分离。 让我们首先在 Web 服务器的文档根目录 (/var/www) 中创建一个名为 twig 的项目文件夹来演示:
cd /var/www mkdir twig cd twig
为我们的小应用程序添加几个文件夹:一个用于 php 文件,一个用于我们的 Twig 模板文件(分别):
mkdir app mkdir views
在 app 文件夹中,创建一个 php 文件:
nano app/app.php
让我们将以下代码粘贴到其中,以将 Hello World 输出到页面上:
<?php echo "<h1>Hello world!</h1>" ?>
保存文件并将浏览器指向该文件。 如果你跟着这将在 your-ip-address/twig/app/app.php。 您应该会在 H1 标签中看到正确打印的声明。
现在这种方法有什么问题? 如果这个 PHP 文件变得更加复杂(对于任何应用程序都会如此),那么您在管理站点布局方面就会遇到很大的问题。 我们只是将 H1 标签硬编码到 PHP echo 语句中,这是一件坏事。 如果你想让设计师使用它,这个设计师将不得不搜索这个文件,这是我们想要阻止的。 因此解决方案是将表示(布局)与逻辑(编程)分离,最好的方法是使用 Twig 等模板引擎。 安装 Twig 后,我们将回到我们的小应用程序。
安装
安装 Twig 的推荐方法是通过 PHP 依赖管理工具 Composer。 如果您不知道这是什么,可以查看 another tutorial 了解更多信息。 但别担心,这没什么大不了的,稍后您会看到。
让我们将 Composer 安装程序下载到应用程序的根文件夹 (twig):
cd /var/www/twig curl -s http://getcomposer.org/installer | php
这应该下载一个名为 composer.phar 的文件,它是 Composer 可执行文件。 接下来,在它旁边创建一个名为 composer.json 的文件:
nano composer.json
并将以下行粘贴到其中:
{ "require": { "twig/twig": "1.*" } }
这使得我们的应用程序依赖于 Twig 模板引擎。 现在让我们使用 composer 命令安装依赖项:
php composer.phar install
Twig 文件下载到 vendor/Twig 文件夹中。 如果添加其他依赖项,它们也将安装在 vendor 文件夹中。
现在我们需要将它“连接”到我们的应用程序。 由于我们使用了 Composer,我们可以使用它的自动加载器功能来加载我们安装的所有依赖项。 所以让我们打开我们的 app.php 文件:
nano app/app.php
删除里面的所有内容并将这一行添加到顶部:
<?php require_once '../vendor/autoload.php'; ?>
通过这一行,我们加载了 Composer 自动加载器,后者又加载了 Twig。 如果您以其他方式安装 Twig,则必须直接要求 Twig 自动加载器:
require_once '/path/to/lib/Twig/Autoloader.php'; Twig_Autoloader::register();
但是我们不需要使用 Composer 来做这件事。 在我们刚刚编写的 require 语句下面,我们需要找到一个 Twig 模板文件并将我们想要打印出来的变量传递给页面。 粘贴以下代码:
<?php $loader = new Twig_Loader_Filesystem('../views/'); ?> <?php $twig = new Twig_Environment($loader); ?> <?php echo $twig->render('page.html', array('text' => 'Hello world!')); ?>
这在这里做什么? 首先,我们创建一个加载器对象,我们将路径传递到包含我们的模板文件的文件夹(我们之前创建的 views 文件夹,当前是空的)。 接下来,我们创建一个存储配置的环境对象。 最后,最有趣的部分,环境对象的渲染方法加载作为第一个参数传递的模板文件,并使用作为第二个参数传递的变量来渲染它。 所以我们现在需要创建 page.html 文件,在里面我们将有一个可用的变量,其中包含我们想要打印出来的语句。 所以让我们这样做:
nano views/page.html
在里面,粘贴以下内容:
<h1>{{ text }}</h1>
如果您保存文件并在浏览器中重新加载 app.php 文件,您应该会在 H1 标签之间打印出相同的文本。 但是现在,我们有了这个单独的文件,我们可以随意播放它来显示它。 我们通过渲染函数传递的变量现在可以打印在双花括号之间。
因此,您可以继续使用此文件并自己进行试验。 您可以将多个变量传递给模板,在控制结构中使用它们,通过模板函数处理它们,甚至应用 Twig 过滤器
结论
在本教程中,我们了解了如何使用 Composer 安装 Twig,以及如何开始使用单独的模板文件在页面上打印简单的变量。 在下一个教程中,我们将更深入地使用 Twig 语法来构建您的模板文件。