Napisany paź-31-2009
funkcje anonimowe
Dla osób, które miały okazję programować w języku JavaScript zapewne nie będzie to żadna nowość. Niemniej jednak od wersji PHP 5.3, otrzymaliśmy możliwość korzystania z funkcji anonimowych. W tym krótkim wpisie chciałbym wytłumaczyć zasadę ich działania w oparciu o kilka przykładów.
Co to jest?
Funkcja anonimowa, to funkcja jak każda inna z tym wyjątkiem, iż nie wymaga określania jej nazwy i może zostać przypisana do zmiennej, a następnie wywołana z jej poziomu. Najlepiej będzie to zobrazować na prostym przykładzie:
$zmienna = function () {
echo 'a';
};
$zmienna();
Po wywołaniu powyższego skryptu, na wyjściu otrzymamy:
Prawda, że proste? W ten sposób możemy bezpośrednio definiować funkcje zwrotne w wywołaniach funkcji, które tego wymagają:
Dla PHP < 5.3
function echosomething () {
echo 'callback';
}
// wolanie funkcji zdefiniowanej przez programiste
call_user_func('echosomething');
Dla PHP >= 5.3
call_user_func(function () { echo 'callback';});
Dodatkowo funkcja anonimowa może korzystać ze zmiennych “dziedziczonych” z przestrzeni, w której została zdefiniowana. Aby użyć tej opcji, w deklaracji funkcji stosuje się słowo kluczowe use. Spójrzmy na poniższy przykład:
class Przyklad {
public static function Wypisz () {
$a = 'in';
// przestrzenia ponizszej funkcji jest metoda Wypisz()
$zmienna = function () use ($a) {
echo $a;
};
$zmienna();
}
}
$a = 'out';
Przyklad::Wypisz();
Na wyjściu ujrzymy napis:
Osoby zainteresowane odsyłam TUTAJ.

Dobrze wiedzieć, bo mój serwer siedzi cały czas na 5.2.9, więc nie miałem jeszcze możliwości przetestowania tych funkcjonalności. ;]
Ostatnio sporo nowości. Osobiście nie mogę się doczekać gdy znajdę chwile, by zapoznać się z możliwościami Smarciaków 3 beta
Autorzy sporo naobiecywali.
Smarty rzuciłem już dawno temu dla OPT, także polecam go mocno. Swoją drogą ciekawi mnie bardzo ruch programistów ponownie stosujących czysty kod PHP w szablonach, na razie nie mogę się jakoś przemóc, żeby spróbować.
Widzę, że wrzuciłeś mojego bloga do linków, cieszę się, że uznałeś go za wartościowy “kawałek internetu”. ;] Mam jednak prośbę, żebyś zmienił tytuł odnośnika na “Tomasz Kowalczyk” albo “blog::programisty”, bo takich właśnie nazw używam. Z góry dzięki. ;]