Smarty 是一个老牌、稳定、轻量的 PHP 模板引擎,通过自动转义变量防 XSS、简洁模板语法、支持缓存与插件,实现逻辑与界面分离;三步即可运行:引入类、配置路径、assign 数据并 display 模板。
PHP 直接拼接 HTML 容易混乱,Smarty 这类模板引擎能帮你把逻辑和界面干净分开——PHP 文件只管数据处理,.tpl 文件专注展示,维护和协作都更轻松。
Smarty 是一个老牌、稳定、轻量的 PHP 模板引擎。它不强制你改写业务逻辑,只是在输出层加了一层“安全又清晰”的隔离:
{$username} 会自动过滤 HTML 标签{$name} 输出变量,{if $age > 18}成年{/if} 写条件,不用写
假设项目结构如下:
/project /libs/ ← Smarty 核心放这里(下载后解压的 libs/) /templates/ ← .tpl 文件放这里(如 index.tpl) /templates_c/ ← 编译后的 PHP 文件,需可写(755 或 777) /cache/ ← 可选,缓存目录,也需可写 index.php ← 入口文件
步骤如下:
libs/ 复制到项目中index.tpl(放在 /templates/):今天是 {$today|date_format:"%Y年%m月%d日"}
index.php 中初始化并分配数据:
查写 .tpl 时不用 PHP 标签,记住这几个就够日常开发:
{$title},支持默认值 {$intro|default:"暂无介绍"}
{$price|number_format:2:",":"."} → 1234.56{if $score >= 90}优秀{elseif $score >= 60}及格{else}不及格{/if}
{foreach $users as $user}{$user.name} ({$user.age}){/foreach}
{include file="header.tpl" title="首页"}
刚上手容易卡在路径或权限,快速排查:
templates_c/ 是否可写(Linux 下 chmod 755 templates_c)$smarty->debugging = true;,右下角会出现调试窗口assign() 的键名和模板里 {$xxx} 完全一致(区分大小写)基本上就这些。Smarty 不复杂但容易忽略细节,先跑通一个例子,再慢慢加功能,比硬啃文档快得多。