Стрілкові функції (Arrow Functions)

← Стрілкові функції (Arrow Functions)

Ashterix

docs: English JsonRpcBundle docs, REST and MCP Bundle sections, package cards

uk/articles/from-tg/series/php-can-do/arrow-functions.md новий файл +70 −0

1 + # Стрілкові функції (Arrow Functions)
2 +
3 + *Як анонімка, тільки стрункіше*
4 +
5 + - **Додано у версії:** PHP 7.4
6 + - **Що дає:** компактний синтаксис для коротких функцій, які автоматично бачать змінні з оточення та завжди повертають результат.
7 +
8 + ## Особливості, які треба знати
9 +
10 + - завжди повертають значення;
11 + - можуть містити лише один вираз — без `{}` і багатооператорних блоків;
12 + - автоматично успадковують змінні з оточення, без `use($x)`;
13 + - читаються як вираз, а не як інструкція.
14 +
15 + ## Чому це зручно
16 +
17 + - менше шаблонного коду;
18 + - виразність у callback-ах (map, filter, reduce);
19 + - краще читається, особливо в колекціях і стрімах;
20 + - підходить для будь-якого місця, де потрібен мінімалістичний обробник.
21 +
22 + ## Реальні приклади застосування
23 +
24 + ### Перетворення масиву
25 +
26 + ```php
27 + $prices = [100, 200, 300];
28 + $tax = 0.2;
29 +
30 + // ❌ Звичайна анонімна функція
31 + $withTax = array_map(function (int $p) use ($tax) {
32 + return $p * (1 + $tax);
33 + }, $prices);
34 +
35 + // ✅ Стрілкова функція
36 + $withTax = array_map(fn(int $p) => $p * (1 + $tax), $prices);
37 + ```
38 +
39 + ### Фільтрація елементів
40 +
41 + ```php
42 + $activeUsers = array_filter($users, fn(User $u) => $u->active);
43 + ```
44 +
45 + ### Підрахунок значення
46 +
47 + ```php
48 + $total = array_reduce($orders, fn(int $sum, Order $o) => $sum + $o->amount, 0);
49 + ```
50 +
51 + ### Простий калькулятор з доступом до зовнішньої змінної
52 +
53 + ```php
54 + $multiplier = 3;
55 + $calc = fn(int $v) => $v * $multiplier;
56 +
57 + echo $calc(10); // 30
58 + ```
59 +
60 + ## Висновок
61 +
62 + > Стрілкові функції — це лаконічна форма анонімок, створена для чистих, коротких виразів у прямолінійній логіці.
63 +
64 + Якщо тобі потрібен в коді `function ($x) use ($y) { return …; }` — просто заміни на `fn()` і відчуй різницю.
65 +
66 + ← [Попередня: Анонімні класи](/articles/from-tg/series/php-can-do/anonymous-classes) · [Уся серія](/articles/from-tg/series/php-can-do) · [Наступна: Генератори →](/articles/from-tg/series/php-can-do/generators)
67 +
68 + ---
69 +
70 + *Вперше опубліковано в Telegram-каналі [«Створений щоб помирати»](https://t.me/php_while_true/76) 17.10.2025.*