Прямая итерация Fluent-объектов в Laravel

В Laravel появилась заметная небольшая, но очень удобная улучшение: теперь класс Fluent поддерживает прямую итерацию через реализацию контракта Iterable. Это означает, что вы можете использовать объекты Fluent в циклах foreach так же естественно, как обычные массивы, без необходимости сначала преобразовывать их в массивы.

Раньше работа с Fluent-объектами в подобных случаях выглядела громоздко: было нужно явно вызывать метод toArray(), чтобы получить массив для перебора. Это прерывало удобный плавный стиль работы с объектами и ухудшало читаемость кода. Новая реализация убирает это препятствие, делая код чище и более интуитивным.

Что изменилось

Раньше для перебора атрибутов Fluent-объекта приходилось сначала превращать его в массив:

// До — превращение в массив обязательно
foreach ($config->data->toArray() as $key => $value) {
    echo "{$key}: {$value}\n";
}

Теперь тот же код можно написать гораздо проще:

// Теперь можно перебирать напрямую
foreach ($config->data as $key => $value) {
    echo "{$key}: {$value}\n";
}

Это делает Fluent-объекты ближе к ожиданиям разработчиков, привыкших к поведению обычных массивов в PHP.

Почему это удобно

Поддержка прямой итерации особенно ценна, когда вы работаете с объёмными настройками, ответами API или любыми другими структурами данных, представленными через Fluent. Пример:

<?php

namespace App\Services;

use Illuminate\Support\Fluent;

class ConfigurationManager
{
    public function getApplicationSettings(): Fluent
    {
        return new Fluent([
            'app_name' => 'Laravel Application',
            'version' => '2.1.0',
            'debug_mode' => false,
            'cache_enabled' => true,
            'api_timeout' => 30,
            'max_file_size' => '10MB',
        ]);
    }

    public function exportToJson(): string
    {
        $settings = $this->getApplicationSettings();
        $data = [];

        foreach ($settings as $key => $value) {
            $data[$key] = $value;
        }

        return json_encode($data, JSON_PRETTY_PRINT);
    }
}

Здесь итерация по настройкам стала естественной частью логики, без лишних преобразований.

Простота в шаблонах Blade

Улучшение также отражается в Blade-шаблонах. Раньше в шаблоне приходилось писать так:

{{-- До — toArray() --}}
@foreach($applicationConfig->settings->toArray() as $key => $value)
    <tr>
        <td>{{ ucwords(str_replace('_', ' ', $key)) }}</td>
        <td>{{ $value }}</td>
    </tr>
@endforeach

Теперь можно упростить до этого:

{{-- После — итерация напрямую --}}
@foreach($applicationConfig->settings as $key => $value)
    <tr>
        <td>{{ ucwords(str_replace('_', ' ', $key)) }}</td>
        <td>{{ $value }}</td>
    </tr>
@endforeach

Это делает представления более читаемыми и избавляет от лишних вызовов методов.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Laravel MCP - AI-взаимодействия по универсальному стандарту

Laravel MCP - новая библиотека для Laravel, которая позволяет легко создавать AI-серверы по универсальному протоколу Model Context Protocol. MCP даёт структурированный способ взаимодействия AI-клиентов с вашим приложением через инструменты, ресурсы и шаблоны запросов.

Кастомные директивы Blade в Laravel

Руководство по созданию и использованию пользовательских Blade-директив в Laravel. Объясняем, какие бывают директивы, где их регистрировать и как применять для улучшения шаблонов.

Как добавить SSH-ключ в аккаунт GitHub

Подробное руководство по добавлению SSH-ключа в аккаунт GitHub: генерация ключа, его добавление в агент, копирование и регистрация на сайте GitHub. Практические шаги для безопасного подключения к репозиториям без пароля.