我具有分層陣列:什麼是放置視圖功能的最佳場所?
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(' ', $depth * 6) . $item['value'] . '</td>';
echo '</tr>';
if (count($item['children'])) {
print_menu_hierarchy($item['children'], $depth + 1);
}
}
}
我的問題是:放哪個函數?
要維護MVC,它必須是視圖的一部分。所以,無論是幫手還是模板。
助手很明顯,但將此函數放在助手中會使修改視圖更困難。每當我改變模板中的某些東西時,我也必須改變助手。此外,這個功能越來越大,保持乾淨是很難的。
模板也是不錯的選擇,定義函數應該在其他地方完成。
任何人有更好的主意在哪裏把這個?
(我正在使用symfony 1.4)
我期望傭工只應以某種方式修改數據輸出或其他處理。你的功能是創建一個HTML結構的輸出,所以我會把它放到視圖模板也許......通過這你只能編輯一個模板,並保持只在一個地方的變化...... – shadyyx 2011-04-20 10:12:22
聽起來像一個很好的例子領導程序員的模式。使用設計模式讓您的生活更輕鬆,並使您能夠編寫更敏捷的代碼,而不是限制您並阻止您表達。 – 2011-04-20 10:17:05