#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
в фильтре.