PHP: Anonymous function, czyli funkcja anonimowa

Dodano: 11 lipca 2010 • 1627 wyświetleń • 0 komentarzy

W programowaniu bardzo często spotykamy się z koniecznością stworzenia funkcji, która zostanie od razu wykonana. Oczywiście można stworzyć wcześniej nową funkcję, ale po co? Dlatego właśnie twórcy języka PHP zadbali o danie programistom możliwości stworzenia funkcji, która będzie użyta tylko w miejscu wystąpienia jej kodu. Czasami jednak stworzenie funkcji anonimowej jest konieczne.

Najczęściej funkcji anonimowej używamy, kiedy ma ona być argumentem innej funkcji.

Popularnym przykładem jest funkcji preg_replace_callback. Jej pierwszym argumentem jest tradycyjnie wyrażenie regularne, a drugim (callback), funkcja create_function lub funkcja anonimowa.

Zajmijmy się więc funkcją anonimową. Pokażę teraz przykładowy skrypt, w którym wykorzystamy funkcję anonimową.

<?php
preg_replace_callback('#"([0-1])" "([a-z]+)" : "([a-z]+)"#',fuction($m) { if ($m[1]==0) return $m[2]; else return $m[3] },$string);
?>

Powyższy przykład znajdzie w zmiennej $string ciąg znaków pasujący do podanego wzorca, a następnie, jeśli wartość w pierwszym cudzysłowie będzie równa 0, zwróci ciąg z drugiego cudzysłowu, jeśli 1, to z drugiego.

Przykład bardzo prosty, ale na pewno pokazuje o co w tym wszystkim chodzi.

Jednak w takim przypadku funkcja anonimowa nie może używać zmiennych zdefiniowanych przed użyciem funkcji preg_replace_callback.

Jest na to jednak rada, a mianowicie dodanie informacji o tym, że zamierzamy tej zmiennej użyć. Wyglądałoby to następująco:

<?php
$zmienna="wartosc zmiennej";
preg_replace_callback('#"([0-1])" "([a-z]+)" : "([a-z]+)"#',fuction($m) use ($zmienna) { if ($m[1]==0) return $m[2] . $zmienna; else return $m[3] . $zmienna },$string);
?>

W tym przypadku do ciągu zostanie dodana zmienna "zewnętrzna" o nazwie $zmienna. Do funkcji zmienną tą dodaliśmy poprzez użycie słowa use.

Funkcję anonimową możemy także przypisać jako wartość zmiennej.

<?php
$funkcja=function() {
	return 'ciag znakow';
}
?>

Wywołanie takiej funkcji ogranicza się do powołania się na zmienną, z tą różnicą, że należy dodać nawiasy na końcu:

<?php
$funkcja=function() {
	return 'ciag znakow';
}
$funkcja();
?>

Funkcje anonimowe (functions.anonymous), to przydatna opcja udostępniana przez wszystkie znane języki programowania. Przy ich użyciu (w PHP) należy pamiętać o tym, że są one dostępne dopiero od wersji PHP 5.3.x.


Zobacz również:
Komentarze

Brak komentarzy

Napisz komentarz

Kacper KołodziejO mnie: Nazywam się Kacper Kołodziej. Jestem uczniem II klasy II LO w Pabianicach o profilu matematyczno-fizycznym. Od 7 lat gram na gitarze. Skończyłem Państwową Szkołę Muzyczną I stopnia w Pabianicach; aktualnie jestem w trzeciej klasie szkoły II stopnia. Oprócz muzyki zajmuję się także tworzeniem stron. Moje prace można obejrzeć w portfolio.

O blogu: Na tym blogu publikuję wszystkie artykuły mojego autorstwa dotyczące programowania, tworzenia stron www, komputerów i internetu, a także muzyki.



© by Kacper Kołodziej 2011 • Code powered by SpawnFramework v.1.5.1 - wersja zmodyfikowana