РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1027 of 1392 menu

Метод pipe

Метод pipe применяется к коллекции и принимает замыкание, в которое передаётся вся коллекция. Внутри замыкания можно выполнять любые операции с коллекцией, а затем вернуть результат этих операций. Метод полезен для создания цепочек преобразований, когда нужно выполнить сложную логику, не разрывая цепочку вызовов.

Синтаксис

<?php $collection->pipe(callable $callback); ?>

Пример

Давайте используем метод pipe для фильтрации коллекции с дополнительной проверкой:

<?php use Illuminate\Support\Collection; $collection = collect([1, 2, 3, 4, 5, 6]); $res = $collection->pipe(function (Collection $coll) { $filtered = $coll->filter(fn($item) => $item % 2 === 0); if ($filtered->count() > 2) { return $filtered->values(); } return collect(['Недостаточно чётных чисел']); }); echo $res; ?>

Результат выполнения кода:

"[2,4,6]"

Пример

Давайте используем метод pipe для преобразования коллекции в строку с пользовательской логикой:

<?php use Illuminate\Support\Collection; $users = collect([ ['name' => 'John', 'age' => 25], ['name' => 'Jane', 'age' => 30], ['name' => 'Bob', 'age' => 35], ]); $res = $users->pipe(function (Collection $coll) { $names = $coll->pluck('name'); return 'Пользователи: ' . implode(', ', $names->toArray()); }); echo $res; ?>

Результат выполнения кода:

"Пользователи: John, Jane, Bob"

Пример

Давайте используем метод pipe для выполнения условной логики с коллекцией:

<?php use Illuminate\Support\Collection; $data = collect([ ['id' => 1, 'status' => 'active'], ['id' => 2, 'status' => 'inactive'], ['id' => 3, 'status' => 'active'], ]); $res = $data->pipe(function (Collection $coll) { $active = $coll->where('status', 'active'); if ($active->isEmpty()) { return 'Нет активных записей'; } return $active->map(function ($item) { return 'ID: ' . $item['id']; })->implode(', '); }); echo $res; ?>

Результат выполнения кода:

"ID: 1, ID: 3"

Смотрите также

  • метод tap,
    который позволяет выполнить действие с коллекцией без изменения результата
  • метод when,
    который применяет замыкание при выполнении условия
  • метод unless,
    который применяет замыкание при невыполнении условия
  • метод map,
    который преобразует каждый элемент коллекции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить