Piper: хелпери для масивів та рядків у стилі Laravel для pipe operator у PHP.

Перекладено ШІ 0 Laravel News 22 травня, 2026

Оператор pipe у PHP 8.5 потребує адаптації звичних інструментів Laravel для ефективної роботи. Пакет Piper вирішує це завдання, пропонуючи зручні функції для елегантної обробки масивів і рядків.

У PHP 8.5 з’явився pipe operator (|>), який передає значення зліва як аргумент для callable-об'єкта справа. Хоча він працює з будь-якою функцією, що приймає один аргумент, вбудовані функції PHP та класи Laravel не були під нього адаптовані. Бібліотека Piper заповнює цю нішу: вона перетворює методи Laravel для роботи з колекціями та рядками на окремі curried-функції, спеціально створені для використання з pipe operator.

# Робота з нативними значеннями

У Laravel класи Collection та Stringable дозволяють будувати ланцюжки методів через об'єкт-обгортку: ви ініціалізуєте процес через collect(), а наприкінці викликаєте ->all() або ->toString(). Piper пропонує інший підхід — його функції працюють безпосередньо з нативними масивами та рядками:

use function Spatie\Piper\Arr\{filter, map, values, join};
 
$result = [1, 2, 3, 4, 5, 6]
    |> filter(fn (int $i) => $i % 2 === 0)
    |> map(fn (int $i) => pow($i, 2))
    |> values()
    |> join(', ', ', and ');
 
// "4, 16, and 36"

У цьому конвеєрі немає об’єктів-обгорток. Кожна функція приймає масив і повертає масив (або рядок у випадку join()), а pipe operator послідовно передає дані далі. Це ідеально підходить для синтаксису |> і стає логічною альтернативою Collection, коли ви працюєте з чистими даними.

# Карровані функції для pipe-ланцюжків

Кожна функція Piper реалізована так, що після передачі конфігураційних аргументів вона повертає closure, яка чекає на вхідне значення. Наприклад, filter(fn (int $i) => $i % 2 === 0) сама по собі нічого не фільтрує — вона повертає callable-об'єкт, який обробить масив, отриманий через |>. Саме завдяки цьому код на кшталт replace('world', 'Piper') виглядає природно всередині ланцюжка:

use function Spatie\Piper\Str\{lower, replace};
 
$greeting = 'Hello, World!'
    |> lower()
    |> replace('world', 'Piper');
 
// "hello, Piper"

# Поєднання операцій над масивами та рядками

Оскільки Piper оперує нативними типами, кроки для масивів і рядків можна вільно змішувати в одному конвеєрі. Список можна перетворити на рядок прямо посеред ланцюжка і продовжити трансформацію:

use function Spatie\Piper\Arr\{map, join};
use function Spatie\Piper\Str\{upper, prefix};
 
$headline = ['laravel', 'news']
    |> map(fn (string $word) => ucfirst($word))
    |> join(' ')
    |> upper()
    |> prefix('>> ');
 
// ">> LARAVEL NEWS"

Namespace Arr містить такі функції, як filter, map, values та join, а Strlower, upper, replace, prefix, suffix тощо. Назви методів та їхня логіка ідентичні до аналогів із Laravel, тому API буде цілком знайомим для користувачів Illuminate\Support.

# Встановлення

Для роботи Piper потрібен PHP 8.5. Встановити бібліотеку можна через Composer:

composer require spatie/piper

Після цього імпортуйте необхідні функції з просторів імен Spatie\Piper\Arr та Spatie\Piper\Str.

Повна документація доступна на сайті Spatie, а вихідний код — на GitHub.

Популярні

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

15 Оновлено 26 травня, 2026

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

28 Оновлено 26 травня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

15 Оновлено 26 травня, 2026

Intervention Image: потужний інструмент для роботи з зображеннями у Laravel

Досліджуйте потужний пакет Intervention Image для PHP, який виводить редагування зображень на новий рівень з оновленою версією 3. Чи готові ви дізнатися, які нові можливості та функції чекають на вас у цьому інструменті