Funkcje anonimowe i strzałkowe w PHP

Funkcje anonimowe i strzałkowe w PHP (wprowadzone od PHP 7.4) pozwalają tworzyć krótkie i zwięzłe wyrażenia funkcyjne. Dzięki nim możesz przekazywać funkcje jako argumenty lub szybko definiować logikę bez konieczności podawania nazwy funkcji.


Funkcje anonimowe i strzałkowe – podstawy

  • Funkcje anonimowe (closures)
    • Definiowane przy pomocy function($param) { ... } bez nazwy.
    • Możesz przypisać je do zmiennej: $dodaj = function($a, $b) { return $a + $b; };
    • Przekazujesz do innej funkcji lub metody, np. sortowania niestandardowego.
  • Funkcje strzałkowe (arrow functions)
    • Skrócona forma: $dodaj = fn($a, $b) => $a + $b;
    • Mają leksyczny zasięg, czyli automatycznie korzystają ze zmiennych z otaczającego kontekstu.
    • Nie wspierają bloków kodu – tylko wyrażenia. Zwracana wartość to wynik po =>.
Przykład
<?php
// Funkcja anonimowa
$dodaj = function($a, $b) {
  return $a + $b;
};
echo "Wynik dodawania anonimowego: " . $dodaj(5, 3) . "<br>";

// Funkcja strzałkowa (PHP 7.4+)
$pomnoz = fn($x, $y) => $x * $y;
echo "Wynik mnożenia strzałkowego: " . $pomnoz(4, 2) . "<br>";
?>
Zwrócona zawartość
Wynik dodawania anonimowego: 8
Wynik mnożenia strzałkowego: 8

Przykładowe zastosowania funkcji anonimowych i strzałkowych

  • Sortowanie tablic
    • Przekazujesz anonimową funkcję do usort() czy array_filter() by porównywać elementy.
  • Wyrażenia callback
    • Przy metodach jak array_map() czy array_reduce() wygodnie używać krótkich funkcji strzałkowych.
  • Reakcje na zdarzenia (np. w frameworkach)
    • Definiujesz szybko logikę w miejscu, bez potrzeby tworzenia nazwanego helpera.

Podsumowanie

  • Funkcje anonimowe to podstawowy sposób na przekazywanie logiki wprost jako wartość, bez nadawania nazwy.
  • Funkcje strzałkowe (arrow) są krótsze i mają leksyczny zasięg zmiennych (korzystają z nich bez use).
  • Przydatne do obsługi funkcji wyższego rzędu (np. array_map), sortowania czy callbacków.
  • Wprowadzają większą czytelność przy krótkich, jednowierszowych operacjach.