使用面向对象的PHP,HTML应该呈现在哪里?
业务流程包括几项维护客户记录的行动 每个业务流程的呈现是否应该获得单独的PHP文件?即。 viewCustomerTransactions.php?
这样的代码应该在哪里?
$custTrans = Customer.getTransactions();
foreach ($custTrans as $ct){
$amount = $ct[0];
$date = $ct[1];
$product = $ct[2];
echo '<div class="custTrans">';
echo '<span class="custTransAmount">'.$amount.'</span>';
echo '<span class="custTransDate">'.$date.'</span>';
echo '<span class="custTransproduct">'.$product.'</span>';
echo '</div>';
}
也许像codeigniter这样的MVC框架会更好?
答案 0 :(得分:4)
我还在弄清楚什么是保持php和布局分离而没有太多模糊的最佳方法。目前我非常喜欢包含模板的方法,因为它非常简单并且没有任何限制。
因此,对于您的示例,您将拥有一个如下所示的php文件(example.php):
<?php
$custTrans = Customer.getTransactions();
$displ_transactions = array();
foreach ($custTrans as $ct){
$transaction = array(
'amount' => $ct[0],
'date' => $ct[1];
'product' => $ct[2];
);
$displ_transactions[] = $transaction; // this will push the transacion into the array
}
include 'example.tpl.php'
?>
然后你需要第二个文件(example.tpl.php):
<?php foreach ($displ_transactions as $transaction) { ?>
<div class="custTrans">
<span class='custTransAmount'><?php echo $transaction['amount'] ?></span>;
<span class='custTransDate'><?php echo $transaction['date'] ?></span>;
<span class='custTransproduct'><?php echo $transaction['product'] ?></span>;
</div>
<?php } ?>
只需在浏览器中调用example.php,您就会看到与之前相同的结果。 这对小型网站来说都很好,因为这种方法会产生一些开销。如果你认真对待模板,请使用smarty。它易于学习,并且具有自动缓存功能,因此速度非常快。
我只是意识到你也可以这样做:
使用example.php:
<?php
$custTrans = Customer.getTransactions();
foreach ($custTrans as $ct){
$amount = $ct[0];
$date = $ct[1];
$product = $ct[2];
include 'example.tpl.php';
}
?>
example.tpl.php:
<div class="custTrans">
<span class='custTransAmount'><?php echo $amount ?></span>;
<span class='custTransDate'><?php echo $date ?></span>;
<span class='custTransproduct'><?php echo $product ?></span>;
</div>
使用最适合你的东西:)
答案 1 :(得分:1)
如果我是你,我会将html存储在变量中,而不是像这样回显:
$custTrans = Customer.getTransactions();
$html = "";
foreach ($custTrans as $ct){
$amount = $ct[0];
$date = $ct[1];
$product = $ct[2];
$html .= "<div class="custTrans">";
$html .= "<span class='custTransAmount'>".$amount."</span>";
$html .= "<span class='custTransDate'>".$date."</span>";
$html .= "<span class='custTransproduct'>".$product."</span>";
$html .= "</div>";
}
然后你将这个html数据存储在变量$ html中,你可以随心所欲地回应它。
echo $html;
这能解决你的问题吗?
W上。
答案 2 :(得分:0)
我必须确认包含模板(由Jules Colle提到)是答案之一,但是,当项目太大时,维护可能会变得混乱,因此请记住要记录包含的文件通过什么文件,因为(目前)没有(免费)IDE解决方案来解决这种类型的链接...这种解决方案可以轻松地将您从一个文件转移到另一个文件,或者只是将所有内容布置成类似过程的代码。 / p>
编辑: 不要忘记魔法常数: http://www.php.net/manual/en/language.constants.predefined.php
并且: $ _SERVER [&#39; DOCUMENT_ROOT&#39;]