Прямая итерация 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)

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

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

jQuery 4.0: крупный релиз спустя почти десять лет

jQuery 4.0 вышла в январе 2026 года. Это первый крупный релиз за почти десять лет. Он обновляет библиотеку под современные стандарты, снимает поддержку старых браузеров, добавляет защиту через Trusted Types и делает код легче и безопаснее.

39 0 1 мин

Как загружать большие файлы в Laravel

Подробный практический гайд по загрузке больших файлов в Laravel с использованием разбиения на части и функцией возобновления. Объясняется, как организовать сервер и клиент для надёжной загрузки больших файлов.

36 0 2 мин

Как создать новый проект на Laravel: подробное руководство для начинающих

Подробное руководство по созданию и настройке нового проекта на Laravel. Подходит для начинающих, которые хотят разобраться с установкой, структурой и запуском приложения.

49 0 1 мин