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 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>