Я пытаюсь упростить фрагмент кода PHP, который выглядит следующим образом:
public function gather($parameters, $infos)
{
$gathered = [];
$number = false;
foreach ($infos as $info) {
foreach ($parameters as $parameter) {
if (strlen($parameter['number'])) {
$this->mark($parameter['number'], $info, $parameter, $gathered); // $gathered is passed by reference
$number = true;
continue;
}
if (strlen($parameter['default'])) {
$this->mark($parameter['default'], $info, $parameter, $gathered); // $gathered is passed by reference
continue;
}
if ($config['smth']) {
doSomething(...);
}
}
}
if (number > 0) {
doSomething(...);
}
return $gathered;
}
Вот проблемы, которые у меня есть:
- Эти вложенные foreach действительно уродливы иЯ хотел бы, чтобы второй в другой функции.Но он использует переменные, которые создаются и используются снаружи.Я уже использовал ссылки с
$gathered
, даже если это не очень хорошо. - Условия всех операций if разные и используют разные переменные, знаете ли вы какой-нибудь способ обобщить случай, подобный этому?
Я могу переписать большие части функций, поэтому я буду рад услышать и другие идеи дизайна.
[EDIT] Функции пометки добавляют элементы в $ собранный с некоторыми условиями итрансформации.
[РЕДАКТИРОВАТЬ] Добавлено больше деталей.