Wykonuj▒c polecenie np. echo wywo│ujemy tak naprawdΩ funkcjΩ, kt≤ra wykonuje odpowiedni▒ operacjΩ (w tym wypadku wy╢wietla tekst). Niekt≤re funkcje zwracaj▒ jak▒╢ warto╢µ, np. funkcje matematyczne.
W PHP mamy mo┐liwo╢µ tworzenia w│asnych funkcji, czyli fragment≤w kodu wykonuj▒cych okre╢lone zdanie. Taka funkcja mo┐e pobieraµ jakie╢ parametry, mo┐e r≤wnie┐ zwracaµ warto╢µ. Dan▒ funkcje musisz zadeklarowaµ przed jej u┐yciem. Oto og≤lna sk│adni:
function nazwa_funkcji(parametry) { kod; [return wartosc_zwracana]; }
Jak wiΩc widzimy, ka┐da funkcja sk│ada siΩ ze s│owa function, po kt≤rym podajemy jej nazwΩ. Po nazwie w nawiasach podajemy listΩ parametr≤w, kt≤re funkcja przyjmuje. Je╢li nie przyjmuje ┐adnych parametr≤w nawiasy pozostawiamy puste. Po takim nag│≤wku pomiΩdzy nawiasami klamrowymi zamieszczamy cia│o funkcji, czyli ca│y jej kod. Do zwracania warto╢ci u┐ywamy s│owa return. Dan▒ funkcjΩ wywo│ujemy podaj▒c jej nazwΩ i listΩ parametr≤w (lub kiedy nie trzeba podawaµ parametr≤w - puste nawiasy).
Du┐o teorii, ale poni┐szy przyk│ad wszystko demonstruje:
<html>
<head>
<title>Funkcje</title>
</head>
<body>
<?
// funkcja bez parametrow, nie
// zwraca wartosci
function Napisz_moje_imie()
{
echo "Karol <br>";
}
// funkcja potrzebuje jednego
// parametru
function Napisz_imie($imie)
{
echo $imie."<br>";
}
// funkcja potrzebuje dwa
// parametry i zwraca wartosc
function Oblicz($x,$y)
{
return ($x*$y);
}
// funkcja pobiera jeden parametr
// i zwraca wartosc
function Podaj_obwod($r)
{
$wynik=(2*3.14*$r);
return $wynik;
}
echo "Teraz testy:<br>";
Napisz_moje_imie();
Napisz_imie("Binboy");
echo "2*2=".Oblicz(2,2)."<br>";
echo "Obwod kola o promieniu 10=".Podaj_obwod(10)."<br>";
?>
</body>
</html>
Nale┐y pamiΩtaµ, ┐e o ile wielko╢µ liter w nazwach funkcji wbudowanych w PHP, tzn. np. echo nie odgrywa znacz▒cej roli, to w funkcjach tworzonych samemu jest istotna.
Teraz jeszcze trochΩ o parametrach. Lista parametr≤w, jakie funkcja przyjmuje sk│ada siΩ z nazw zmiennych (pod jakimi dane zostan▒ zapamiΩtane) oddzielonych od siebie przecinkami. Wszystkie te zmienne, kiedy funkcja jest wywo│ywana s▒ tworzone i inicjowane przekazanymi warto╢ciami. Po zako±czeniu dzia│ania funkcji, zmienne automatycznie s▒ usuwane. O widoczno╢ci zmiennych m≤wili╢my przy ich omawianiu. Modyfikuj▒c zawarto╢µ takiej zmiennej, nie zmieniamy warto╢ci zmiennej przekazanej do funkcji, a jedynie jej kopie wewn▒trz. Je╢li by╢my tak chcieli, to nazwΩ musieliby╢my poprzedziµ znakiem &.
W PHP mamy r≤wnie┐ mo┐liwo╢µ tworzenia tzw. parametr≤w domy╢lnych. W tym przypadku przy ich wypisywaniu w nawiasach okr▒g│ym nadajemy im dan▒ warto╢µ. Wszystkie parametry z domy╢lnymi warto╢ciami musz▒ byµ na ko±cu listy parametr≤w. Poni┐szy przyk│ad demonstruje u┐ycie parametr≤w w naszych programach:
<html>
<head>
<title>Funkcje - parametry</title>
</head>
<body>
<?
function Wyswietl($napis)
{
echo "$napis <br>";
$napis="Binboy";
}
function Wyswietl2(&$napis)
{
echo "$napis <br>";
$napis="Binboy";
}
function Wyswietl3($napis,$kolor="BLUE")
{
echo "<font color='$kolor'>$napis</font> <br>";
}
// funkcja Wyswietl nie zmieni
// wartosci zmiennej $tekst
$tekst="Karol";
Wyswietl($tekst);
echo "$tekst <br><br>";
// funkcja Wyswietl2 ZMIENI
// wartosc zmiennej $tekst
Wyswietl2($tekst);
echo "$tekst <br><br>";
// wywolanie funkcji bez parametru
// okreslajacego kolor
Wyswietl3("[BHP] Binboy HomePage");
// wywolanie funkcji z podaniem ow
// parametru
Wyswietl3("[BHP] Binboy HomePage","RED");
?>
</body>
</html>
Dynamiczne wywo│anie funkcji
Jednym z element≤w PHP, kt≤rych nie ma ani Pascal, ani C/C++ jest tzw. dynamiczne wywo│anie funkcji. Polega to na tym, ┐e do zmiennej przypisujemy nazwΩ danej funkcji, a nastΩpnie u┐ywamy tej zmiennej, jak zwyk│ej funkcji (│▒cznie z parametrami). Oto przyk│ad:
<html>
<head>
<title>Funkcje - dynamiczne wywolane</title>
</head>
<body>
<?
function Pokaz($napis)
{
echo $napis."<br>";
}
function Podaj_imie()
{
echo "Karol <br>";
}
// przypisujemy do zmiennej
// nazwe funkcji
$Zmienna="Pokaz";
// wywolujemy zmienna, jak funkcje
$Zmienna("To jesy napis");
// podajemy nazwe innej funkcji
$Zmienna="Podaj_imie";
// i wywolujemy
$Zmienna();
?>
</body>
</html>