Елегантна обробка вкладених масивів за допомогою допоміжної функції fluent() у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 20 червня, 2025
Laravel пропонує функцію допомоги fluent(), яка спрощує роботу з багатовимірними масивами, дозволяючи інтуїтивно отримувати доступ до вкладених структур даних. Досліджуйте, як ця нова можливість зробить вашу роботу з масивами ще ефективнішою

Laravel запроваджує функцію-утиліту fluent() для зручнішої роботи з мультимірними масивами, пропонуючи інтуїтивний спосіб доступу та маніпуляцій з вкладеними структурами даних

Використання fluent-утиліти для роботи з мультимірними масивами виглядає так:

$config = [
    'app' => [
        'name' => 'TaskManager',
        'settings' => [
            'timezone' => 'UTC',
            'locale' => 'en',
        ]
    ],
    'features' => [
        ['name' => 'Analytics'],
        ['name' => 'Reports']
    ]
];
 
fluent($config)->app;
fluent($config)->get('app.name');
fluent($config)->collect('features')->pluck('name');
fluent($config)->scope('app.settings')->toJson();

Ось практичний варіант реалізації для побудови відповіді API:

class ApiResponseBuilder extends Controller
{
    public function buildResponse(Product $product)
    {
        $responseData = [
            'product' => [
                'details' => [
                    'title' => $product->title,
                    'price' => $product->price,
                    'created' => $product->created_at
                ],
                'options' => [
                    'variants' => $product->variant_settings,
                    'shipping' => $product->shipping_options
                ]
            ],
            'metrics' => [
                'views' => $product->views->count(),
                'orders' => $product->orders->count(),
                'reviews' => $product->reviews->count()
            ]
        ];
 
        $response = fluent($responseData);
 
        return response()->json([
            'title' => $response->get('product.details.title'),
            'price' => $response->get('product.details.price'),
            'shipping' => $response->get('product.options.shipping'),
            'analytics' => $response->scope('metrics')->toArray(),
            'variants' => $response
                ->collect('product.options.variants')
                ->filter(fn($available) => $available)
                ->keys()
        ]);
    }
}

Утиліта fluent значно спрощує читання та обслуговування складних операцій з масивами

Популярні

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту