З упевненістю витягайте окремі елементи масиву за допомогою методу Arr::sole() у Laravel

Перекладено ШІ 0 Laravel News 26 квітня, 2025

В Laravel метод Arr::sole() революційно спрощує маніпуляцію масивами, поєднуючи перевірку на наявність та унікальність в одному елегантному виклику. Досліджуйте, як цей потужний інструмент може зробити ваш код більш зрозумілим і ефективним у статті!

Laravel покращує маніпуляцію масивами завдяки потужному методу Arr::sole(), який переносить функціональність операції 'sole' з Eloquent до стандартних PHP масивів. Цей метод гарантує, що ви отримаєте точно один відповідний елемент, усуваючи потребу в численних валідаційних перевірках.

Щоб отримати єдиний елемент масиву, зазвичай потрібно окремо перевіряти наявність і унікальність. Arr::sole() об'єднує ці операції в одному, зрозумілому виклику:

use Illuminate\Support\Arr;
 
// Повертає "foo", коли це єдиний елемент
Arr::sole(['foo']); // "foo"
 
// Генерує виключення для порожніх масивів
Arr::sole([]); // Генерує ItemNotFoundException
 
// Генерує виключення для множинних елементів
Arr::sole(['foo', 'bar']); // Генерує MultipleItemsFoundException

Справжня сила методу проявляється під час фільтрації з використанням функцій-зворотів:

use Illuminate\Support\Arr;
 
// Масив даних про співробітників
$employees = [
    ['id' => 1, 'name' => 'Sarah', 'department' => 'Engineering'],
    ['id' => 2, 'name' => 'Mike', 'department' => 'Marketing'],
    ['id' => 3, 'name' => 'Alex', 'department' => 'Sales'],
];
 
// Отримання єдиного інженера
$engineer = Arr::sole($employees, fn ($employee) => $employee['department'] === 'Engineering');
// Повертає ['id' => 1, 'name' => 'Sarah', 'department' => 'Engineering']
 
// Виникне MultipleItemsFoundException, якщо знайдеться кілька інженерів
// Виникне ItemNotFoundException, якщо не буде інженерів

Поведінка методу адаптується в залежності від результатів пошуку:

// Генерує ItemNotFoundException для відсутніх відповідностей
Arr::sole(['apple', 'banana'], fn (string $fruit) => $fruit === 'orange');
 
// Генерує MultipleItemsFoundException для множинних відповідностей
Arr::sole(['orange', 'apple', 'orange'], fn (string $fruit) => $fruit === 'orange');

У реальному застосуванні ви можете використовувати цей метод для отримання конфігурацій, коли саме одне налаштування повинно відповідати:

class SettingsManager
{
    public function getActivePaymentGateway(array $gateways)
    {
        return Arr::sole($gateways, fn ($gateway) => $gateway['enabled'] === true);
    }
 
    public function getPrimaryContact(array $contacts)
    {
        return Arr::sole($contacts, fn ($contact) => $contact['is_primary'] === true);
    }
}

Метод Arr::sole() створює самодокументуючий код, який чітко передає ваше намір знайти саме один елемент, роблячи ваші операції з масивами більш надійними та зрозумілими

Популярні

Інше, що варто прочитати

17 Оновлено 02 червня, 2026

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

10 Оновлено 02 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

14 Оновлено 02 червня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

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