菜鸟学PHP之Smarty入门

发布时间:2026-09-28 17:08:52 浏览次数:1

菜鸟学PHP之Smarty入门

简介

Smarty是一个模板引擎,它专门用于分离应用程序逻辑和表示层。它将模板和PHP代码分开处理,在模板中只包含基础HTML、CSS和JavaScript,而不包含PHP的逻辑结构和语句。 Smarty支持标记、变量、修饰器和PHP函数调用等。Smarty的使用可以提高应用程序的可维护性,降低维护成本,极大地提高了开发效率。

安装Smarty模板引擎

要使用Smarty,首先需要安装Smarty模板引擎。可以通过以下步骤安装:

步骤1:下载Smarty

请到Smarty的官方网站 http://www.smarty.net/ 下载最新版Smarty。通常情况下,下载后得到的是一个压缩包。

步骤2:解压Smarty

将下载的Smarty压缩包解压到某个目录。例如将其解压到C:\php\Smarty目录下。

步骤3:在PHP中引入Smarty

在PHP代码中需要使用Smarty时,需要引入Smarty类库。可以通过以下代码在PHP代码中引入Smarty:

<?phprequire_once '/path/to/Smarty/libs/Smarty.class.php'; //定义Smarty的路径$smarty = new Smarty(); //创建Smarty对象?>

在上面的代码中,需要将path/to/Smarty目录路径替换为实际的Smarty目录路径。

基本使用

步骤1:创建模板文件

在使用Smarty进行模板引擎开发之前,必须先创建一个Smarty模板文件。首先需要在Web服务器的根目录下或者某个虚拟站点下创建一个Smarty模板文件(例如index.tpl)。在这个Smarty模板文件中可以定义HTML、CSS和JavaScript元素,并通过Smarty的标记来定义Smarty变量。

一个简单的index.tpl模板文件示例:

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>{$title}</title></head><body>    <h1>{$title}</h1>    <p>{$content}</p></body></html>

步骤2:定义PHP代码

在PHP代码文件中,需要定义Smarty变量。可以使用以下方式定义Smarty变量:

<?phprequire_once '/path/to/Smarty/libs/Smarty.class.php';$smarty = new Smarty();$smarty->assign('title', '这是标题');$smarty->assign('content', '这是内容');$smarty->display('index.tpl'); //在显示Smarty文件时应该使用display方法?>

在上面的PHP代码中,首先创建Smarty对象,然后通过assign方法定义Smarty变量。例如在这个代码中值分别是‘这是标题’和‘这是内容’,最后使用display方法在浏览器中显示index.tpl模板文件。

进阶使用

更进一步地使用Smarty,Smarty通过修饰符处理输出的内容。Smarty有众多内置的修饰符,包括字符串、数值、日期和布尔修饰符等。

修饰符示例1:字符串修饰符

{$str|lower}  // 将字符串转换成小写{$str|upper}  // 将字符串转换成大写{$str|escape}  // 转义字符串,用于防止跨站脚本攻击(XSS){$str|truncate:10} // 将字符串截断到固定长度

修饰符示例2:数值修饰符

{$num|number_format}  // 将数值以千位分隔符与小数点进行格式化{$num|format_number:2}  // 按指定的小数位数格式化数值{$num|format_currency:'USD'}  // 将数值格式化成指定的货币格式

一个完整示例:

<?phprequire_once '/path/to/Smarty/libs/Smarty.class.php';$smarty = new Smarty();$title = '这是标题';$content = '这是内容';$time = '1632508380';$smarty->assign('title', $title);$smarty->assign('content', $content);$smarty->assign('time', $time);$smarty->assign('fullname', 'John Smith');$smarty->assign('salary', 10000.1);$smarty->display('index.tpl');?>
<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>{$title|upper}</title></head><body>    <h1>{$title|upper}</h1> //使用字符串修饰符将标题转换成大写    <p>{$content|truncate:5|escape}</p> //将内容截断到5个字符并转义,以防止XSS攻击    <p>{if $time|date_format:"%Y%m%d%H%M%S" gt "20210000000000"}{$time|date_format:"%Y/%m/%d %H:%M:%S"}{/if}</p>//仅在日期大于2021年执行    <p>{$fullname|default:"没有名字"}</p> //默认情况下输出$fullname的值,如果不存在,输出"没有名字"    <p>{$salary|number_format}</p> //格式化薪水并用逗号分隔    <p>{$salary|format_currency:'USD'}</p> //将薪水转换成美元并格式化</body></html>

通过上述示例,可以学习到使用Smarty的基本语法,以及如何使用修饰符处理输出的内容。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477