Перейти к содержимому
Максиметер

PHP:

PHP: Spread оператор (...): неочевидные трюки с массивами Коллеги, если вы всё ещё склеиваете массивы только через array_merge, присмотритесь к ... . В современных PHP он экономит код и решает несколько неочевидных задач. Сборка массива на лету $roles = ['admin', 'editor']; $all = [...$roles, 'manager', ...getExtraRoles()]; Числовые ключи пересчитаются, а результат читается как обычная последовательность. Дефолты и переопределения $defaults = ['debug' => false, 'cache' => true]; $config = [...$defaults, ...$userOptions]; Что позже, то и важнее. Хотите жёстко задать значение? Ставьте его после спреда: $config = [...$defaults, ...$userOptions, 'cache' => false]; Строковые ключи С PHP 8.1 ... нормально работает с ассоциативными массивами. При совпадении ключей последний перезапишет предыдущий. Именованные аргументы через массив function sendMail(string $to, string $subject, bool $urgent = false) {} $args = ['to' => 'client@mail.ru', 'subject' => 'Счёт', 'urgent' => true]; sendMail(...$args); Удобно для фабрик, обёрток и динамических вызовов. Генераторы и итераторы $items = [...getRowsFromDb(), ...getRowsFromApi()]; Развернуть можно любой Traversable. Но генератор выполнится сразу — кэша «на потом» не будет. Не путайте с рекурсивным мержем Спред разворачивает только верхний уровень. Вложенные массивы останутся значениями. Нужно глубоко объединить? Смотрите в сторону рекурсивного array_replace. Практика простая: ... делает код короче, но порядок источников решает. Собирайте конфиги осознанно, и продакшен не удивит. Вот так. Идем кодить дальше! 🚀

9 просмотров

Канал в каталоге Максиметера

127 подписчиков · IT и технологии

Другие публикации канала

Популярные публикации канала

Ещё по теме «IT и технологии»

Читать дальше

Два раза в неделю свежие посты этого канала — на почту и в личную ленту. Без повторного поиска канала вручную.