У меня есть иерархический массив:
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)