我真的不明白这些之间的区别。模板如何变得更好?我不会理解它或者如何说服某人使用它我一起工作。我理解&#34;分离&#34;关注,但我没有遇到大问题。我不是第一个生成多个<li>
标签的示例就像echo
那样吗?并且,我会使用php作为&#34;模板语言,&#34;所以我不关心Smarty或其他系统。感谢。
Why should I use templating system in PHP?
<h1><?=$title?></h1>
<ul>
<?php foreach ($items as $item) {?>
<li><?=$item?></li>
<?php } ?>
</ul>
和(我在一个论坛中找到的一些代码片段):
echo "<table>";
for ($i = 0; $i < $largestArray; $i++)
{
echo "<tr>";
if ($i < $array1Size)
{
echo "<td>";
echo $array1[$i];
echo "</td>";
}
else
{
echo "<td>";
echo "null";
echo "</td>";
}
if ($i < $array2Size)
{
echo "<td>";
echo $array2[$i];
echo "</td>";
}
else
{
echo "<td>";
echo "null";
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
或类似的东西:
<table id="working" border="0" cellspacing="1" cellpadding="3">
<tr>
<?php foreach ($csv->titles as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?>
</tr>
<?php foreach ($csv->data as $key => $row): ?>
<tr>
<?php foreach ($row as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
编辑:这应该是社区维基问题吗?
答案 0 :(得分:1)
你的身份似乎有些混乱,但重点是第二个版本是可读的(你可以轻松阅读标签层次结构,例如)。可读代码是一种易于维护或重构的代码。
仅使用PHP的echo关键字编写下面的代码就不太可读了。你也会关注引号和双引号。使用类似模板的方法,最终得到的代码看起来与HTML文档类似。
<table id="working" border="0" cellspacing="1" cellpadding="3">
<tr>
<?php foreach ($csv->titles as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?>
</tr>
<?php foreach ($csv->data as $key => $row): ?>
<tr>
<?php foreach ($row as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
答案 1 :(得分:0)
像cakephp和codeignitor这样的模板系统使用MVC,它可以使代码更清晰,更符合标准。你也可以编写自己的MVC。
答案 2 :(得分:0)
模板系统不是分离表示逻辑的最终解决方案。它们是 解决方案,也是许多PHP框架使用的解决方案。在一般的“MVC”/ MVA / MVP / MVVM PHP开发中,您不希望表示层中有任何业务逻辑。回应HTML是(通常)直接违反这种做法;使用模板,表示层中不存在业务逻辑,反之亦然。
回到第一点,模板是 解决方案,而不是 解决方案。表示层有很多选项,主要取决于您的编码风格和/或框架/库使用情况。
在个人层面上,我更喜欢模板(对于大多数小型医疗项目而言),其原因超出了上述内容:
制作“主题”并更轻松地交换网站样式。只需修改模板或实现可以加载不同模板的主题切换器
从模型转到模板是一件轻而易举的事,因为模板(通常)只是HTML,其中有一些php片段回显数据。
模板“愚蠢”。他们不需要了解业务逻辑中发生的任何事情,他们所关心的只是将一些数据反映到HTML中。
可读性。这个几乎完全是个人偏好,特别是考虑到各种各样的模板语法。
tl; dr - 模板与[在此处插入其他解决方案]几乎完全是主观的,除非您有基于托管,客户要求,流量水平等的约束。如果是这种情况,那么找到基准,更多关于效率和可扩展性,并根据项目的要求做出明智的决定。