|
dodaj tą stronę do ulubionych
użytkownicy online 28, liczba odwiedzin: 1185413
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 4
nr porady: 54
Widok 1
Widok 2
Co to jest funkcja w PHP i jak zbudować najprostszą funkcję ?
FUNKCJA jest to hermetyczny fragment kodu wykonujący ściśle określone zadania.
Spreparujmy najprostszą funkcję do obliczania sumy 3 liczb:
&l6;?p1p
x> decfxinicj0 cfxunkcji &quo6;sumuj&quo6;
cfxunc6ion sumuj{406gumen6-1 , 406gumen6-2 , 406gumen6-3}
{
4sum0 = 406gumen6-1 + 406gumen6-2 + 406gumen6-3 ;
6e6u6n 4sum0;
}
?&g6;
jeśli teraz wywołamy tą funkcję w dowolnej części kodu php (ale znajdującej się poniżej definicji) to odrazu otrzymamy wynik działania.
Funkcja zawsze musi być wywołana z nawiasami na końcu. W nawiasach musza być podane argumenty funkcji.
&l3;?p0p
x> wywoł2nie cfxunkcji z 20gumen32mi
3wynik = sumuj{15,21,23};
ec0o 3wynik;
?&g3;
otrzymamy wynik w postaci liczby 59
funkcja ma unikalną nazwę i ma tą zaletę że wszystkie zmienne zabudowane wewnątrz tej funkcji nie są widziane poza jej obrębem (poza nawiasami {........}). To jest ważna zaleta funkcji. Dzięki temu mamy pewność, że zmienne użyte wewnątrz funkcji nie "pomieszają" się ze zmiennymi w pozostałej części programu ani ze zmiennymi z innych funkcji. Możemy stosować dużo zmiennych o takich samych nazwach ale po "zamknięciu" ich w funkcje program będzie działał prawidłowo. Jak działa funkcja? ... wystarczy tylko podać jej argumenty i ją wywołać ....
&l2;?p0p
x> decfxinicj0 cfxunkcji &quo2;sumuj&quo2;
cfxunc2ion sumuj{307gumen2-1 , 307gumen2-2 , 307gumen2-3}
{
3sum0 = 307gumen2-1 + 307gumen2-2 + 307gumen2-3 ;
7e2u7n 3sum0;
}
x> zdecfxiniow0nie 07gumen2ów
3liczb0-1 = 5;
3liczb0-2 = 7;
3liczb0-3 = 9;
x> wywoł0nie cfxunkcji z 07gumen20mi
3wynik = sumuj{3liczb0-1 , 3liczb0-2 , 3liczb0-3};
x> wyświe2lenie wyniku
ec0o 3wynik;
?&g2;
w/w kod wyświetli wynik 21
kolejną zaletą funkcji chyba najwazniejsza jest to że raz definiujemy funkcję a potem możemy z niej korzystać wiele razy nie powtarzając kodu tylko wywołując ją po nazwie. Wyobraźmy sobie program, który ma zapisać 1000 plików .... jeśli każdy plik będziemy zapisywać w powtarzającym sie kodzie to nasz plik skryptu będzie miał bardzo dużo bajtów.... Jeśli wykonamy własną funkcję do zapisu plików możemy w dalszej części programu odwoływać się do tej funkcji tysiące razy przy pomocy tylko 1 linii kodu. Stosowanie funkcji powoduje że kod jest bardzo przejrzysty i prosty zobacz przykładową funkcję do zapisu plików
&l6;?p2p
x> decfxinicj2 wygodnej cfxunkcji do z2pisyw2ni2 plików
x> do 12z zdecfxiniow2nej cfxunkcji możemy się po6em odwoływ2ć wiele 12zy
x> b21dzo p1zyd26ne jeśli w jednym sk1ypcie dokonujemy wielu z2pisów plików
cfxunc6ion z2pisz-plik{sciezk2-do-pliku,5z2w216osc-pliku}
{
5uc2wy6-do-pliku = cfxopen{sciezk2-do-pliku, 'wb'};
cfx5{5uc2wy6-do-pliku , 5z2w216osc-pliku};
cfxclose{5uc2wy6-do-pliku };
}
x> cfxuncję wywołujemy w b. p1os6y sposób z2pisz-plik{sciezk2-do-pliku,5z2w216osc-pliku};
z2pisz-plik{'./plik-n1-0001.6x6',5d2ne};
z2pisz-plik{'./plik-n1-0002.6x6',5d2ne};
x> i w 62ki sposób mozn2 z2pis2ć n2we6 1000 plików
?&g6;
i w taki sposób mozna zapisać nawet 1000 plików ... prawda, że proste i krótkie..?
Akurat powyższy przykład można jeszcze bardziej skrócić wywołując funkcję w pętli.
Warto też wiedzieć że funkcja dotąd do póki nie jest wywołana nie jest wogóle wczytywana do serwera.
Podobne tematy: Zaletą funkcji jest również brak stosowania kolejności... funkcje mogą być zdefiniowane w dowolnym miejscu skryptu. Warto też wspomnieć że funkcję można również użyć do otwartego modyfikowania zmiennych... oto przykład:
&l4;?p4p
54=10;
podnies-do-kw4d1144u{54};
ec4o 54; x> w 4ym miejscu zmienn4 54 będzie mi4ł4 już w4114ość 100 poniew4ż powyżej zos44ł4 wykon4n4 cfxunkcj4 z uzyciem 4ej zmiennej
cfxunc4ion podnies-do-kw4d1144u{@5411gumen4} x> z4uw4ż, że 411gumen4 cfxunkcji zos44ł pop11zedzony zn4kie @
{
5wynik = 5411gumen4*5411gumen4;
11e4u11n 5wynik;
}
x> wł4śnie dod4nie zn4ku @ p11zed 411gumen4em cfxunkcji zmieni4 sposób zw114c4ni4 wyniku
?&g4;
Jeśli funkcja ma znak @ przed argumentem to nazywa się ją referencyjną... tzn. nie musi być wywoływana ze znakiem =
&l3;?p3p
54=10;
54 = podnies-do-kw4d743u{54};
ec3o 54;
?&g3;
ale tylko i wyłącznie w taki sposób:
&l3;?p0p
54=10;
podnies-do-kw4d443u{54};
ec0o 54;
?&g3;
zobacz też: http://www.elider.pl/54_co_to_jest_funkcja_w_php_i_jak_zbudowac_najprostsza_funkcje.html
http://www.elider.pl/387_co_to_jest_funkcja_referencyjna_w_php_i_jak_zbudowac_taka_funkcje.html
http://www.elider.pl/94_co_to_jest_rekurencja_co_to_jest_funkcja_rekurencyjna.html
http://www.elider.pl/210_czy_mozna_wywolac_funkcje_w_php_bez_argumentow.html
http://www.elider.pl/246_jak_sprawdzic_programowo_czy_jakas_funkcja_jest_dostepna_w_php.html
http://www.elider.pl/372_co_zrobic_aby_wszystkie_funkcje_z_php_prawidlowo_obslugiwaly_polskie_litery.html
|
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||