Оператор Pipe Operator з'явиться у PHP 8.5, яка буде випущена 20 листопада 2025 року. Цей оператор обіцяє спростити роботу PHP-розробників, дозволяючи зручно з'єднувати декілька викликів, передаючи значення зліва направо.
Оператор
|>
, або “пайп”, приймає функцію з однією параметром справа і передає їй значення зліва, повертаючи результат виконання функції.Pipe (
|>
) працює за принципом ліворуч-направо, передаючи значення (або результат виразу), яке знаходиться зліва, як перший і єдиний параметр до функції справа. Це означає, що наступні два фрагменти коду є логічно ідентичними:
З прийнятої RFC наведемо приклад, як передати рядок через кілька функцій. Оператор дозволяє створити єдиний ланцюг з кількох викликів з використанням функцій першого класу, що робить код читабельнішим. У наведеному прикладі використовується тимчасова змінна.
// Перед PHP 8.5, використовуючи тимчасову змінну
$temp = "Hello World";
$temp = htmlentities($temp);
$temp = str_split($temp);
$temp = array_map('strtoupper', $temp);
$temp = array_filter($temp, fn($v) => $v != 'O');
$result = $temp;
Якщо не використовувати тимчасову змінну, цей код буде виглядати так:
// Вкладений
$result = array_filter(
array_map(
'strtoupper',
str_split(
htmlentities("Hello World")
)
),
fn($v) => $v != 'O'
);
Оператор PHP 8.5 демонструє, як обробити простий рядок через декілька кроків, зберігаючи читабельність коду:
// Використання оператора pipe у PHP 8.5
$result = "Hello World"
|> htmlentities(...)
|> str_split(...)
|> fn($x) => array_map('strtoupper', $x)
|> fn($x) => array_filter($x, fn($v) => $v != 'O');
Версія з тимчасовою змінною виглядає майже такою ж читабельною, як і з використанням оператора пайп, але мені подобається, як оператор об'єднує кожен крок в єдину групу викликів.
Щоб дізнатися більше про оператор пайп, ознайомтеся з пропозицією RFC для повних деталей: rfc:pipe-operator-v3. Якщо ви хочете експериментувати з PHP 8.5, перший альфа-реліз був випущений 3 липня 2025 року. Перевірте сторінку todo:php85 для деталей.