Перетворення будь-якого значення в колекцію за допомогою методу Collection::wrap у Laravel

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

Метод Collection::wrap у Laravel забезпечує безперебійну конверсію різних типів даних у колекції, гарантуючи однакову обробку колекцій незалежно від формату вхідних даних

Метод wrap ефективно працює з різними типами значень:

use Illuminate\Support\Collection;
 
// Обгортка одного значення
$collection = Collection::wrap('Alice Smith');
// Результат: ['Alice Smith']
 
// Обгортка масиву
$collection = Collection::wrap(['Alice Smith']);
// Результат: ['Alice Smith']
 
// Обгортка існуючої колекції
$collection = Collection::wrap(collect('Alice Smith'));
// Результат: ['Alice Smith']

Ось приклад використання у сервісі сповіщень по електронній пошті:

class NotificationService
{
    public function sendEmails($recipients, $message)
    {
        return Collection::wrap($recipients)
            ->map(fn($email) => $this->validateEmail($email))
            ->filter()
            ->each(fn($email) => $this->dispatch($email, $message));
    }
 
    public function assignCategories($product, $categories)
    {
        $currentCategories = $product->categories;
        $newCategories = Collection::wrap($categories)
            ->unique()
            ->diff($currentCategories);
 
        $product->categories()->sync($newCategories);
 
        return $product;
    }
 
    public function formatNotifications($notifications)
    {
        return Collection::wrap($notifications)
            ->map(fn($notification) => [
                'id' => $notification->id,
                'message' => $notification->content,
                'timestamp' => $notification->created_at
            ])
            ->sortByDesc('timestamp');
    }
}
 
class AlertController extends Controller
{
    public function broadcast(Request $request, NotificationService $service)
    {
        $alerts = AlertService::latest($request->limit);
        return $service->formatNotifications($alerts);
    }
}

Метод wrap забезпечує єдину обробку колекцій незалежно від типу вхідних даних, роблячи ваш код більш надійним і гнучким

Популярні

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!