我知道这个问题可能很愚蠢,但我已经阅读了很多关于聪明的滞后和漏洞的谣言,我真的不想深入了解所有这些,但我确实想为我的脚本使用舒适的模板。
我正在寻找的是一个功能集或只是一个脚本,所以我可以使用像$ smarty-> assign这样的东西,所以我可以在我的模板中使用生成的代码,例如{$ username}而不是整个{{1 }}
除了获得整个模板引擎之外,还有更轻松的选择吗
答案 0 :(得分:0)
我认为你应该重新考虑你的意见。
第一条规则是所有模板引擎和其他脚本都有一些错误,使用所有内容(甚至是OOP)可能会使代码运行速度变慢。即使是PHP也有很多错误(有些错误很多年没有修复),你可能仍然使用它。所以要么你只考虑错误和速度,要么考虑功能和良好实践,你不能总是同时实现这两者。
第二件事就是有人在评论中已经提到过,有许多PHP模板引擎。 Smarty是最受欢迎和最知名的,但也有其他例如Twig。哪一个对你更好?很难说。哪一个会有最好的表现?很难说 - 许多性能测试是矛盾的,看着其中一个,你可能会读到Smarty是最好的,最快的,而另一个,Smarty是最慢的。
我认为创建自己的模板引擎并没有多大意义。您提到过您希望使用{$username}
。但是循环和控制结构呢?您想在模板引擎中对它们进行全部编码吗?在那种情况下表现怎么样?您确定您的模板引擎会更好,更快,并且不会有任何错误吗?
所有这些问题都很重要,因为你需要知道总是使用任何类型的库它很可能会有一些错误并且不总是创建自己的库会更好(可能通常它会赢得'吨)。
如果您仍然考虑创建自己的&#34;模板引擎&#34;我不认为这是必要的。您应该简单地使用本机PHP代码来实现此目的。如果您的代码将在PHP 5.4及更高版本中使用,无论设置是什么而不是<?php echo $username ?>
,您都可以使用<?= $username ?>
。在以前的版本中,您需要确保将short_open_tag
设置为1.此设置是否优于{$username}
?可能不是,但我认为使用它而不是创建自己的模板引擎就足够了。
最重要的是分离逻辑表单显示。因此,在您的纯PHP文件(没有HTML / CSV / ...代码)中,您应该简单地使用来自数据库,计算等的数据以及模板文件(也可能是PHP文件但与HTML混合) {1}}。
您还可以做的是创建自己的类,并且在纯PHP文件中使用简单:
<input type="text" name"test" value="<?= $test_value ?>" />
以及稍后在PHP文件中混合使用HTML语法,您可以使用:
$o = new Output();
$o->assign('test_value', $username);
使用您自己的课程,您还可以更轻松地准备数据以进行显示 - 您可以运行例如htmlspecialchars,htmlentities和类似功能,以确保您的输出安全。