7. Funkcje
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 zadanie. 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ładnia:
Kod:
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:
Kod:
<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:
Kod:
<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:
Kod:
<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>
Zakładki