模板引擎


COOLPHP使用了Smarty作为模板引擎

提起Smarty,PHP程序员几乎无人不知,它是最早被规模使用、最知名的模板引擎,如今前后端分离,前端技术飞快崛起的今天,各类框架自带模版逐步完成健壮的年代,Smarty也早就退出了历史舞台,其实引擎模版的后期也因为它的体积庞大,功能复杂,语法也相对复杂,非常沉重。很多PHP程序员也早已转去新生代模版引擎,体积小,更加方便,学习成本低的轻量新型的模板引擎,为什么我还是给我的框架选用Smarty呢,主要就是我最开始学习PHP的时候就用的Smarty,期间也没接触到其他更加优秀的模板引擎,就已经开始进入前后分离的开发模式了。


接下来说说Smarty,据我了解下来,Smarty也是所有模板引擎中最复杂的,而且Smarty的拥有的一些基础语法,可以说和PHP没有什么区别了,比如你可以使用Smarty完成以下操作

{for $i = 1 to 20 step 2}
  {$i}
{/for}


从这个语法可以看出Smarty有多强大,就循环语句Smarty就有for、foreach、section、也支持break、continue标签,完全可以替代一些PHP的语法来使用,这写功能在其他引擎模板中,就比较单一。


Smarty的强大和复杂还不止这些,它还支持大量的内建函数,自定义函数以及简单的Ui功能,甚至你可以在Smarty基础上开发新的插件,进一步扩展Smarty的功能,比如,你可以利用下的代码实现一个表格

$Smarty->assign('data', [1, 2, 3, 4, 5, 6, 7, 8, 9]);
$Smarty->assign('tr', ['bgcolor = "#eeeeee"','bgcolor = "#dddddd"']);
$Smarty->display('index.html');
//在模板输出表格
{html_table loop = $data}


你还可以,通过smarty_function_name方法,能够自定义标签来增强Smarty的功能。感兴趣的朋友可以去阅读官方手册,还有很多功能,我也没全部去看过。虽然Smarty的学习成本高,但是,正是因为它的功能强大,文档比较完善,历史也比较悠久,也是PHP引擎模板的代表,比较适合多个团队间协作的使用,所以我使用Smarty作为,COOLPHP框架的模板引擎。


在COOLPHP中你只需要继承一下,控制器父类,就可以在控制器中,直接使用模板引擎了

class Index extends Controller
{
    public function __construct()
    {
        parent::assign('data', 'Hello World');
        parent::display('index.html');
    }
}