У меня есть функция, которая уменьшит (оптимизирует) количество строк кода, которое у этого есть. Эта функция имеет несколько фрагментов, которые повторяются.Код функции уменьшения с лямбда-функцией
Может ли уменьшить этот код с помощью лямбда-функции?
Это мой код функции:
static function get_all_category_with_widgets($status = 'all') {
$all_categories = SB_Central::get_categories();
$all_widgets = SB_Settings::get_sb_widgets(); // Get all widgets from options variable.
foreach ($all_categories as $category_key => $category_value) {
foreach ($all_widgets as $widget_value) {
// Create one widget
$widget = array_merge($widget_value['widget'], array ('id' => $widget_value['id'], 'status' => $widget_value['status']));
// In this case save active and disable.
if ($status == 'active_and_disable' && ($widget_value['status'] == 'active' || $widget_value['status'] == 'disable')) {
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
} elseif ($status == 'active' && $widget_value['status'] == 'active') {
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
} elseif ($status == 'disable' && $widget_value['status'] == 'disable') {
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
} elseif ($status == 'deleted' && $widget_value['status'] == 'deleted') {
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
} elseif ($status == 'all') {
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
}
}
}
return $all_categories;
}
И это код, который всегда у меня есть повторение:
if ($category_value[ 'category_title' ] == $widget_value[ 'category' ][ 'title' ]) {
$all_categories[ $category_key ][ 'widgets' ][ ] = $widget; // Save widget
}
Если вы знаете лучший способ уменьшить этот код будет приветствоваться.
Все, что 'IF' могут все быть сгруппированы в один IF заявление. –
Пожалуйста, объясните, почему вы думаете, что «меньшее количество строк» всегда коррелирует с «оптимизацией». –
@lightness Racess, Создается впечатление, что у меня есть несколько повторяющихся утверждений, что с другой точки зрения я могу уменьшить количество строк. Возможно, я хорошо интерпретировал, но я хочу увидеть возможность уменьшения количества строк, если это возможно. Спасибо за все. –