一、简介
PHP Smarty是一款开放源代码的模板引擎,它采用了MVC的思想,将业务逻辑与表现逻辑进行分离,使得代码更加清晰易懂、易维护、易扩展。
下面是一个示例的代码:
//加载Smarty类库 require('Smarty.class.php'); $smarty = new Smarty(); //设置Smarty相关的配置 $smarty->left_delimiter = '{'; $smarty->right_delimiter = '}'; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; //传入变量 $smarty->assign('username', 'Tom'); //编译并输出模板 $smarty->display('index.tpl');
二、变量输出
在Smarty模板中,我们可以使用{$variable}的方式来输出变量内容。
比如:
//PHP文件中 $name = 'Lucy'; $smarty->assign('username', $name); //模板中 欢迎你,{$username}!
三、循环和条件判断
Smarty中循环和条件判断的语法与PHP类似,可以使用foreach、if、else等关键字。
比如:
//PHP文件中 $users = array( array('name' => 'Tom', 'age' => 20), array('name' => 'Lucy', 'age' => 18), array('name' => 'Jerry', 'age' => 22) ); $smarty->assign('users', $users); //模板中
-
{foreach $users as $user}
- {$user.name},{$user.age}岁 {/foreach}
四、模板继承
模板继承是Smarty的一个重要特性,它可以提高模板的复用性、可维护性和可扩展性。
比如:
//PHP文件中 $smarty->assign('title', '首页'); //index.tpl模板中 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{$title}</title> </head> <body> <div id="header"> {$header} </div> <div id="content"> {$content} </div> <div id="footer"> {$footer} </div> </body> </html> //child.tpl模板中 {extends file="index.tpl"} {block name="header"} <div class="logo"></div> <div class="navigation"> <ul> <li><a href="#">首页</a></li> <li><a href="#">产品</a></li> <li><a href="#">关于我们</a></li> </ul> </div> {/block} {block name="content"} <div class="slider"></div> <p>欢迎来到我们的网站!</p> {/block} {block name="footer"} <p>版权所有,翻版必究!</p> {/block}
五、自定义函数和修饰器
如果Smarty提供的函数和修饰器不够用,我们可以自定义函数和修饰器来扩展。
比如:
//定义函数 function myfunction($params, $smarty) { return strtoupper($params['string']); } $smarty->registerPlugin('function', 'myfunction', 'myfunction'); //模板中 {$name|myfunction} //输出变量$name的值并将其转换为大写 //定义修饰器 function mymodifier($string) { return str_replace('hello', 'hi', $string); } $smarty->registerPlugin('modifier', 'mymodifier', 'mymodifier'); //模板中 {$message|mymodifier} //将变量$message中的"hello"替换为"hi"