Funkcje w php

Język php posiada wiele wbudowanych funkcji. Umożliwia również tworzenie własnych. Właśnie temu zagadnieniu poświęcony jest niniejszy artykuł. Zaczniemy od zebrania podstawowych informacji na temat funkcji. Funkcje mogą być definiowane w dowolnym miejscu skryptu php. Definicję rozpoczynamy od słowa kluczowgo function, później występuje nazwa funkcji oraz otwarcie i zamknięcie nawiasu tak jak poniżej.

function abc()
{
	echo 'Moja pierwsza funkcja';
}
//wywołanie funkcji
abc();
Nazwa funkcji musi się składać wyłącznie z liter, cyfr i znaków podkreślenia (ponadto nie może zaczynać się cyfrą). Nie można również tworzyć nazw funkcji kolidujących z nazwami wbudowanych funkcji php. Ponadto nie można zdefiniować dwóch funkcji o tej samej nazwie (wielkość liter nie ma znaczenia), nawet jeśli przyjmują różne zestawy parametrów. Funkcja może posiadać parametry, które przekazujemy pomiędzy znakami nawiasów.
function def($imie)
{
	echo 'Witaj '.$imie;
}
//wywołanie funkcji
def('Ola');
Funkcję wywołuje się pisząc jej nazwę i nawiasy (ewentualne parametry przekazujemy pomiędzy nawiasami). Kiedy wywołamy powyższą funkcję pisząc np. def('Ala'), zostanie utworzona widziana tylko w obrębie funkcji def zmienna $imie o wartości 'Ala', po czym zostanie wykonany program zawarty w definicji funkcji tzn. zostanie wypisany tekst 'Witaj Ala'. Możemy również określać domyślne wartości dla parametrów, które nie zostaną przekazane. W celu zdefiniowania swoich własnych wartości domyślnych, tuż za ustalaną zmienną, dodaj stałą wartość, która ma zostać przypisana, jeśli nie zostanie przekazany odpowiedni parametr.
function def($imie='Ala')
{
	echo 'Witaj '.$imie;
}
def();//to samo co wywołanie def('Ala')
Można okreslić wiele argumentów z wartościami domyślnymi, ale powinny być one umieszczone zawsze po argumentach obowiązkowych. Funkcja może również zwracać wartość. Do tego celu służy polecenie return. Jeżeli nie ma w funkcji słowa return NULL jest domyślnie zwracaną wartością. Wywołanie słowa return przerywa działanie funkcji. Poniżej przykład funkcji zwracającej wartość.
function foo()
{
	return 'Ciąg znaków';
}

function bar()
{
	return array(45, 23);
}

$string = foo();
$tablica = bar();
Parametry można przekazywac również przez referencję (operator referencji to &). Referencja oznacza, że nie tworzymy lokalnej kopii zmiennej lecz modyfikujemy przekazany argument. Najłatwiej zrozumieć to analizując poniższe programy. W drugim z nich parametr jest przekazywany przez referencję.
function zmien_wartosc($zm)
{
	$zm = 7;
}
$a = 4;
zmien_wartosc($a);
echo $a;//wypisze 4

function zmien_wartosc(&$zm)
{
	$zm = 7;
}
$a = 4;
zmien_wartosc($a);
echo $a;//wypisze 7
Funkcje mogą ponadto zwracać referencję. Dla określenia, że funkcja powinna zwracać referencję, trzeba umieścić operator referencji przed nazwą funkcji. Niezbędne jest również określenie, że wynik funkcji również powinien być referencyjny.
function &zwroc()
{
	$nazwa = 'test';
	return $nazwa; 
}

$a =& zwroc();//wywołaniu funkcji musi również towarzyszyć znak referencji
Od php 5.3 wprowadzono tzw. funkcje anonimowe (lub domknięcia). Anonimowe funkcje mogą być przypisywane bezpośrednio do zmiennej. Spójrzmy na poniższy przykład. Wygląda to znajomo chociażby z jQuery.
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet('World');