我经常听到人们建议(我自己也做了几次)将事情分开:PHP代码,HTML,外部CSS,外部JS等等。
除了明显的可读性和维护优势之外,还有其他强大的优势(例如在服务器负载或页面处理时间方面)吗?
作为一个简单的例子,我们想要实现一个包含我们从数据库中读取的产品的表。
我们想要的输出类似于
<div class="description">This table lists all our products</div>
<table class="products">
<tr>
<th>Name</th>
<th>Available</th>
<th>Price</th>
</tr>
<tr>
<td>Prod 1</td>
<td>Yes</td>
<td>$100</td>
</tr>
...
...
</table>
<div class="info">Some generic info on the products here</div>
所以这里我们有一些静态输出(2 div
元素和表头)和一些动态输出(实际的表内容)。
我们可以将所有静态内容从PHP标记中删除,并尝试仅在需要的地方保留PHP
<div class="description">This table lists all our products</div>
<table class="products">
<tr>
<th>Name</th>
<th>Available</th>
<th>Price</th>
</tr>
<?
for ($p=0; $p<count($products); $p++)
{
echo '<tr>';
echo '<td>'.$products[$p]["name"].'</td>';
echo '<td>'.$products[$p]["availability"].'</td>';
echo '<td>'.$products[$p]["price"].'</td>';
echo '</tr>';
}
?>
</table>
<div>.....</div>
另一方面,我们可以在PHP中嵌入所有内容
<?
echo '<div class="description">This table lists all our products</div>';
echo '<table class="products"><tr><th>Name</th>'.
'<th>Available</th><th>Price</th></tr>';
for ($p=0; $p<count($products); $p++)
{
echo '<tr>';
echo '<td>'.$products[$p]["name"].'</td>';
echo '<td>'.$products[$p]["availability"].'</td>';
echo '<td>'.$products[$p]["price"].'</td>';
echo '</tr>';
}
echo '</table>';
echo '<div>.....</div>';
选择其中一种的原因是什么?
答案 0 :(得分:4)
alternative syntax for control structures对我来说似乎更具可读性:
<div class="description">This table lists all our products</div>
<table class="products">
<tr>
<th>Name</th>
<th>Available</th>
<th>Price</th>
</tr>
<?php foreach($products as $p): ?>
<tr>
<td><?php echo $p["name"]; ?></td>
<td><?php echo $p["availability"]; ?></td>
<td><?php echo $p["price"]; ?></td>
</tr>
<?php endforeach; ?>
</table>
<div class="info"><?php echo $info; ?></div>
答案 1 :(得分:1)
如果它只是一段代码供你玩,那根本不重要。
但是如果一个应用程序变得越来越复杂(并且更多的人在其中工作),通常会将视图层(此处为:HTML)与代码层(此处:PHP)分开至关重要。 ) - 所以你可以指派设计师玩输出和编码器来玩它背后的功能。
这不是一个只有php的主题,这是非常一般的。像MVC这样的建筑模型基于类似的理论。
答案 2 :(得分:1)
我认为这是一个非常紧凑的字符串<?= $var ?>
答案 3 :(得分:0)
我不建议使用php的短sytax。有时将代码从一个服务器移动到另一个服务器可能会有问题。
您需要这样做的原因是时间。好的代码很容易支持和升级。在某些情况下,它也是性能问题,但不是在你的情况下。
您案例中的理想示例是: 你必须要文件 的index.php products.php
文件products.php包含
<?php
...
foreach($products as $product)
{
$productHTML[] = '<tr><td>' . $product["name"] . '</td></tr>';
}
$productHTML = implode("", productHTML);
?>
index.php:
<html>
...
<?php echo $productsHTML;?>
...
</html>
当然,更多的普通开发人员使用更多的硬结构,我们使用函数,类,模板等等。但这种方式对于小项目来说已经足够了。