Laravel
February 17
Конвертирование значений в коллекции с методом `wrap` в Laravel
Конвертирование значений в коллекции становится простым и удобным с помощью метода Collection::wrap
. Эта универсальная утилита гарантирует, что вы всегда будете работать с коллекцией, независимо от типа входных данных.
Базовое использование
Конвертирование различных типов значений в коллекции:
use Illuminate\Support\Collection; // Конвертирование отдельное значение $collection = Collection::wrap('John Doe'); // Result: ['John Doe'] // Конвертирование массив $collection = Collection::wrap(['John Doe']); // Result: ['John Doe'] // Конвертирование существующую коллекцию $collection = Collection::wrap(collect('John Doe')); // Result: ['John Doe']
Реальный пример
Рассмотрим, как это можно использовать в сервисе обработки данных:
class DataProcessor { public function processItems($items) { return Collection::wrap($items) ->map(fn($item) => $this->formatItem($item)) ->filter() ->values(); } public function addTags($entity, $tags) { $existingTags = $entity->tags; $newTags = Collection::wrap($tags) ->unique() ->diff($existingTags); $entity->tags()->attach($newTags); return $entity; } public function processSearchResults($results) { return Collection::wrap($results) ->map(fn($result) => [ 'id' => $result->id, 'title' => $result->title, 'url' => $result->url ]) ->sortBy('title'); } } // Применение class SearchController extends Controller { public function search(Request $request, DataProcessor $processor) { $results = SearchService::find($request->query); return $processor->processSearchResults($results); } }
Метод wrap
обеспечивает последовательную работу с коллекциями независимо от типа входных данных, делая код более надежным и гибким.