Метод replaceRecursive у Laravel надає потужне рішення для оновлення вкладених масивів без втрати незмінних значень, що є особливо корисним при роботі зі складними структурами конфігурацій.
$collection = collect([
'user' => [
'name' => 'John',
'settings' => [
'theme' => 'dark',
'notifications' => true,
]
]
]);
$updated = $collection->replaceRecursive([
'user' => [
'settings' => [
'theme' => 'light'
]
]
]);
Розгляньмо практичний приклад із системою налаштувань інформаційної панелі:
<?php
namespace App\Services;
use Illuminate\Support\Collection;
class DashboardConfigurationService
{
public function mergeUserPreferences(array $defaultConfig, array $userPreferences): array
{
return collect($defaultConfig)->replaceRecursive($userPreferences)->all();
}
public function getConfiguration(User $user): array
{
$defaultConfig = [
'layout' => [
'sidebar' => [
'position' => 'left',
'width' => 250,
'collapsed' => false
],
'theme' => [
'mode' => 'light',
'color' => 'blue',
'font_size' => 14
],
'widgets' => [
'weather' => true,
'calendar' => true,
'notifications' => true
]
]
];
return $this->mergeUserPreferences(
$defaultConfig,
$user->dashboard_preferences ?? []
);
}
}
ReplaceRecursive забезпечує елегантний спосіб обробки глибоких оновлень масивів, зберігаючи при цьому незазначені значення. Це ідеальне рішення для управління злиттями конфігурацій і системами переваг.