我遇到了以下代码。它打印出HTML(使用ZF2的partial
功能),同时还递归计算所有项目的总数。
function gen_items($parentId)
{
$total = 0;
$rows = $this->db->getData($parentId); //DB call!
foreach($rows as $row)
{
$id = $row['id']
$price = $row['price'];
echo $this->partial('item.phtml', array('price'=> $price));
$total += $price + $this->gen_items($id);
}
return $total;
}
首先,我认为这是一个问题,因为名称gen_items
对于为订单项生成HTML代码很有意义,但是对它进行总结并没有意义。
我有一个想法是创建一个复制函数来完成所有相同的事情,除了一个函数用于HTML生成,一个函数用于求和。
问题
如何将其解耦?是否可以在不创建两个复制所有递归DB调用的函数的情况下完成它?
有关数据库的更多详情
数据库结构:表(id,price);没有父母的时候id == -1
。否则,id
指向父id
。
行数 - 比如平均约5-10个父项,每个项共有1到6个孩子(其中一些可能是约3个孩子,其中有1个子孩子自己)
答案 0 :(得分:0)
我正在寻求一个解决方案:
来电者
瞧!
---代码可能在写完之后添加 -
(它基本相同,但不是$ total而是累积$ childRows)