Почему я использую Laravel collect() вместо простой функции PHP?

#php #arrays #laravel

Вопрос:

Недавно я написал код, используя простую функцию PHP в Laravel. Код связан с выбором типов записей и отображает некоторые мета-поля в соответствии с выбранным типом записи. Типы записей жестко закодированы в конфигурационном файле.

Проблема в том, что мой начальник изменил этот код после проверки и использовал метод Laravel collect ().

Поэтому мой вопрос в том, почему я должен использовать этот код, поскольку простой код очень хорошо выполняет свою работу? Ожидая хорошего разумного ответа.

Пожалуйста, проверьте код ниже —

 <?php
// $post_type => article, news, event
// In config file, metaboxes holdes array of metaboxes whose keys are post types
// $this->config => it is returning the config variables

**Process - I**
$this->metaBoxes = $this->config["metaboxes"][$post_type] ?? [];

foreach ($this->metaBoxes as $key => $value) {
    if (array_key_exists($key, $boxes)) {
        ($value)->create($post_type);
    } else {
        unset($this->metaBoxes[$key]);
    }
}

**Process - II**
function getMetaboxes($post_type) {
    $config = $this->config['metaboxes'][$post_type] ?? [];
    return collect($this->metaBoxes)
        ->filter(function ($metabox, $name) use ($config) {
            return array_key_exists($name, $config);
        })
        ->map(function ($metabox) {
            return $metabox;
        })
        ->all();
}
 

Комментарии:

1. collect() это простая функция … вы спрашиваете, зачем вообще использовать Коллекции?

2. удобочитаемость, через 6 месяцев или лет, когда вы снова посетите код и попытаетесь понять, что происходит, второй будет легче читать.

3. ИМХО — первое яснее — и в этом проблема — таково мое мнение. У людей есть свои собственные представления о том, что лучше. Иногда это может быть более стандартным, иногда более эффективным, НО в конце концов все сводится к тому, что предпочитают люди.

4. кроме того, этот вызов для map коллекции не нужен, это приведет к тому же результату, что и не вызов map

5. @AnuratChapanond Код выглядит как полная замена, после всего, что он использует array_key_exists в фильтре.