首页 > 编程笔记 > PHP笔记 阅读:17

PHP Smarty模板引擎的安装和使用(新手必看)

MVC 设计模式要求将视图与业务逻辑代码分离。为了实现分离的效果,可以借助 Smarty 模板引擎。

Smarty 模板引擎提供了一套语法,用于嵌入 HTML 中输出数据。和 PHP 原生语法相比,Smarty 模板引擎的语法更加简单易懂,即使没有 PHP 基础的开发人员也可以快速上手。

安装Smarty

Smarty 是使用 PHP 语言开发的模板引擎,具有响应速度快、语句自由、支持插件扩展等特点。

Smarty 实现了 PHP 代码与 HTML 代码的分离,使 PHP 开发人员专注于数据的处理及功能模块的实现,网页设计人员专注于网页的设计与排版工作。

使用 Composer 可以安装 Smarty 模板引擎。在命令提示符窗口中,切换到 C:\web\www\myframe 目录,执行安装 Smarty 模板引擎的命令,具体命令如下:
composer require smarty/smarty=~4.3
上述命令执行成功后,打开 composer.json 文件,会看到该文件被自动添加了 Smarty 的相关配置,具体配置如下:
"require": {
    "smarty/smarty": "^4.3"
}
上述配置表示安装的 Smarty 模板引擎是 4.3 版本。

安装 Smarty 模板引擎后,打开 vendor 目录,会看到里面新增了 smarty 目录,Smarty 模板引擎的依赖包保存在该目录中。

Smarty 的核心文件在 vendor\smarty\smarty\libs 目录下,该目录中的文件和目录如下表所示:

表:vendor\smarty\smarty\libs目录下的文件和目录
名称 说明
Autoloader.php Smarty 中实现自动载入文件功能的类
bootstrap.php 实现自动加载 Smarty
debug.tpl Smarty 中的提示信息模板文件
functions.php 辅助函数文件
Smarty.class.php Smarty 核心类文件,提供相关方法用于实现 Smarty 模板引擎的功能
plugins 自定义插件目录,存放各类自定义插件的目录
sysplugins 存放系统文件目录

Smarty的基本使用

Smarty 安装完成后,就可以使用 Smarty 了。在使用 Smarty 之前,先了解 Smarty 的常用语法和方法,具体如下面的两张表所示。

表:Smarty 的常用语法
语法 说明
if 指令 条件判断
foreach 指令 循环展示数据
include 指令 引用其他模板文件

表:Smarty 的常用方法
方法 说明
assign() 向模板页面分配变量
display() 展示模板
fetch() 将模板转化为字符串
block() 定义一个区域块

上面两张表仅列举了 Smarty 的常用语法和方法,Smarty 模板引擎还有很多其他功能。需要注意的是,Smarty 的语法和 PHP 的语法在某些地方是不同的,因此在使用时需要注意语法的规范性和兼容性。

Smarty 的语法和方法的使用都比较简单,这里便不花费大量篇幅讲解它们的格式,有需要的读者可以参考 Smarty 官方手册。

下面演示使用 Smarty 查询 student 数据表的数据。在 VS Code 编辑器中打开 C:\web\apache2.4\htdocs 目录,创建 smarty.php 文件,具体代码如下:
<?php
require_once('C:/web/www/myframe/vendor/smarty/smarty/libs/Smarty.class.php');
$dsn = 'mysql:host=localhost;port=3306;dbname=myframe;charset=utf8mb4';
$pdo = new PDO($dsn, 'root', '123456');
$res = $pdo->query('SELECT * FROM `student`');
$data = [];
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
    $data[] = ['id'=>$row['id'], 'name'=>$row['name']];
}
$smarty = new Smarty();
$smarty->assign('data', $data);
$smarty->display('student.html');
在上述代码中:
创建 student.html,具体代码如下:
<body>
  <table border="1">
    <tr><th>id</th><th>name</th></tr>
    {foreach $data as $v}
      <tr><td>{$v.id}</td><td>{$v.name}</td></tr>
    {/foreach}
  </table>
</body>
在上述代码中,第 4~6 行代码使用 foreach 语句输出学生信息。

使用 Smarty 模板引擎实现了视图与业务逻辑代码的分离,提高了开发效率和代码的可维护性。在生活中,我们也要善于利用现有的工具和资源不断提升自己,推动社会的良性发展。

相关文章