Ta strona stosuje pliki cookies. Poczytaj co to jest w polityka cookies

Kursy i tutoriale wideo informatyczne


Kącik początkującego
Dobre programy - tutoriale
Programy biznes
Programowanie PHP

nauczycieli Funkcje w PHP

         Funkcje czym są i do czego się przydają? Spróbujemy na te pytania odpowiedzieć.

       Funkcje można porównać do czasowników w mowie. Gdy w świecie realnym chcemy przesunąć szafkę w prawo, to chwytamy ją z lewej strony i działamy siłą na nią by się przesunęła w prawo o określoną odległość. Czyli na szafce wykonujemy jakąś czynność określoną funkcję. Funkcja może też np. prezentować szafę, zdemontować ją, zapełnić ją, poukładać przedmioty w niej itp.

Przykład:

Szafka jest 10 cm od lewej ściany, my chcemy zmienić jej położenie w prawo o 20cm. Zatem należy dodać do wskaźnika położenia szafki wartość 20cm wykonując funkcję przesuń.

$AktualnaPozycjaSzafki=10;

function 
PrzesunSzafke($AktualnaPozycjaSzafki$o_ile
)
{
    
$AktualnaPozycjaSzafki $AktualnaPozycjaSzafki $o_ile
;
    return 
$AktualnaPozycjaSzafki
;

}

$AktualnaPozycjaSzafkiPrzesunSzafke($AktualnaPozycjaSzafki20
);
echo 
"Aktualne położenie szafki to: ".$AktualnaPozycjaSzafki
;

Oczywiście otrzymamy odpowiedź:
Aktualne położenie szafki to 30.

Pułapki ze zmiennymi w funkcjach...

    Jedną z pułapek na jaką możemy natrafić korzystając z funkcji jest to, że zmienne w nich występujące mogą się nieco dziwnie zachowywać. To co wykonamy na zmiennych funkcjach wykonuje się w tylko i wyłącznie na kopii tej zmiennej, czyli nie na niej samej. Dlatego też w powyższym przykładzie trzeba było napisać
return $AktualnaPozycjaSzafki+$o_ile;

Oznaczało to zwróć wynik a w wywołaniu napisaliśmy:

$AktualnaPozycjaSzafki PrzesunSzafke($AktualnaPozycjaSzafki20);

Czyli do zmiennej $AktualnaPozycjaSzafki przypisaliśmy operatorem = wynik działania funkcji PrzesunSzafke(). Gdybyśmy tego nie zrobili to i wynik działania programu byłby 10, bo zmienne utworzone w funkcji są lokalne to tak jakby lokalnie popadał deszcz a pozostała okolica pozostała sucha...

Inny sposób czyli referencje - to jakby synonim ale przedmiot ten sam - szafka, mebel

     Jak można pozbyć się tego return'a i wykonać działanie na właściwej zmiennej?
można posłużyć się referencją, czyli nie tworzyć kopii zmiennej, lecz zrobić jakby wskazanie na nią, czyli jakby przezwisko dla tego samego obiektu, drugie imie dla danej osoby itp. Wtedy funkcja będzie działać na tej samej zmiennej i nie będzie tworzyć kopii.

$AktualnaPozycjaSzafki=10;

function 
PrzesunSzafke(&$AktualnaPozycjaSzafki$o_ile
)
{
    
$AktualnaPozycjaSzafki $AktualnaPozycjaSzafki $o_ile
;
}

PrzesunSzafke($AktualnaPozycjaSzafki20
);
echo 
"Aktualne położenie szafki to: ".$AktualnaPozycjaSzafki
;

Co więc dają funkcje?

     Funkcje dają nam możliwość upchania kodu w jeden nazwany blok i nie zaśmiecać całego kodu. Inaczej nasz skrypt byłby ciurkiem pisany. Dodatkowo gdy potrzebujemy wykorzystać ponownie tę samą operację w innym miejscu to zamiast pisać cały kod to wywołujemy tylko funkcję przesuń i z głowy...
To tak jakby pisać piosenkę a zamiast powtarzać za każdym razem cały tekst refrenu piszemy tylko WypiszRefren(); i z głowy...

Może ta funkcja jest mało przekonywująca, bo jest bardzo prosta, ale gdy jest ona dłuższa i np. zawiera 100 linijek kodu wówczas sensowność oddzielana kodu jest bardziej przekonywująca....

W dalszej części kursu w części przewidzianej dla klas zobaczymy jak jeszcze bardziej grupować i łączyć całe obiekty, np. człowieka, czyli elementy, które się na niego składają, np. głowa, ręce, nogi i funkcje, które może wykonać, np. chodzić, biegać, jeść, spać itd.


Zobacz inne:

copyright © Pcwiedza.pl