12 / 06 / 2017 Developers

Funkcje anonimowe

Od wersji 5.3 PHP’a otrzymaliśmy możliwość korzystania z funkcji anonimowych, takich jak wcześniej już istniały w JavaScript.

Czym są funkcje anonimowe ?

Funkcje anonimowe, są to funkcje w działaniu podobne do wszystkich innych, lecz nie muszą posiadać nazwy oraz możemy je przypisać do zmiennej, którą następnie możemy wywołać.

Na przykład:

$foo = function() {
    echo ‘to jest funckja anonimowa’;
  };
 
  $foo();

W wyniku czego wyświetli nam się po prostu tekst „to jest funkcja anonimowa”.

Funkcje zwrotne

Jedną z zalet tego rozwiązania jest możliwość tworzenia tzw. callbacków, czyli definiowania funkcji, które następnie możemy przekazać do innej funkcji, aby się wykonały w dalszej części kodu. Jest to rozwiązanie dobrze znane osobom piszącym w JavaScript i wiele z nich się zgodzi, że brakowało tego w PHP.

$callback = function() {
    echo ‘to jest funkcja zwrotna’;
  };
 
  function myFunction($cb) {
    $cb();
  }
 
  myFunction($callback);

Po wykonaniu tego kodu wyświetli nam się napis „to jest funkcja zwrotna”, ponieważ przekazaliśmy ją do myFunction, a następnie została wywołana wewnątrz tej funkcji.

Argumenty funkcji anonimowych

Funkcje anonimowe przyjmują argumenty podobnie do każdej innej funkcji.

$echo = function($a) {
  echo $a;
};

Lecz istnieje też możliwość przekazania do niej zmiennych lokalnie dostępnych w miejscu, w którym definiujemy naszą funkcje. Do tego celu wykorzystujemy słowo kluczowe use.

$a = ‘zmienna lokalna’;
 
  $foo = function() use ($a) {
    echo $a;
  };

W wyniku wywołania tego kodu wyświetli nam się napis „zmienna lokalna”. Warunkiem jest to, że przekazana zmienna musi być zdefiniowana przed definicją samej funkcji.

FacebookTwitterGoogle+LinkedIn