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:

a

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:

in

Osoby zainteresowane odsyłam TUTAJ.

Tagi : ,

Komentarze:

Napisz komentarz