gpt4 book ai didi

php - 放置 View 函数的最佳位置是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:44 25 4
gpt4 key购买 nike

我有一个分层数组:

array(
'id' => 4, //id of current element
'parent' => 2, //id of parent element
'value' => '', //some value
'children' => array() //array of similar arrays
)

每个元素可以包含多个元素,元素可以包含多个元素等。可以这么说,迭代它的最好方法是使用函数,它将调用自身来处理子元素:

function print_menu_hierarchy($hierarchy, $depth = 0) {
foreach ($hierarchy as $item) {
echo '<tr>';
echo ' <td>' . $item['id'] . '</td>';
echo ' <td>' . str_repeat('&nbsp;', $depth * 6) . $item['value'] . '</td>';
echo '</tr>';
if (count($item['children'])) {
print_menu_hierarchy($item['children'], $depth + 1);
}
}
}

我的问题是:该函数放在哪里?

要维护 MVC,它必须是 View 的一部分。所以,要么是助手,要么是模板。

Helper 很明显,但是把这个函数放到 helper 上会使修改 View 变得更加困难。每次我要更改模板中的某些内容时,我也必须更改帮助程序。此外,这个功能越来越大,很难保持干净。

模板也是一个糟糕的选择,定义函数应该在其他地方完成。

有人知道把它放在哪里吗?

(我使用的是 symfony 1.4)

最佳答案

虽然我不清楚你使用的是什么框架,但函数本身——正如你自己所说的——不属于 View 。这个函数应该放在你的应用程序的 helper 部分。您需要做的唯一更改是从此辅助函数调用单个项目的 View ,而不是将 echo 硬编码到您的层次结构爬虫中。像这样:

function print_menu_hierarchy($hierarchy, $depth = 0) {
foreach ($hierarchy as $item) {
call_view_function('view_name_for_menu_item', array('item' => $item, 'depth' => $depth));
if (count($item['children'])) {
print_menu_hierarchy($item['children'], $depth + 1);
}
}
}

View 看起来像:

<tr>
<td><?php echo $params['item']['id']; ?></td>
<td><?php echo str_repeat('&nbsp;', $params['depth'] * 6) . $params['item']['value']; ?></td>
</tr>

关于php - 放置 View 函数的最佳位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com