Reklama
Wizyt
Dzisiaj: 289Wszystkich: 520566

Funkcje

Technikum » PAI » Język PHP » Funkcje

 

Funkcja jest to ciąg instrukcji stanowiący blok kodu, który może być wielokrotnie wykorzystany w różnych programach lub jego miejscach. Funkcja jest wywoływana przez podanie jej nazwy i listy argumentów. Po zakończeniu działania funkcja często zwraca pewną wartość.
Istnieją dwa rodzaje funkcji. Funkcje, które zostały wbudowane w język, oraz funkcje zdefiniowane przez programistę.

 

Definiowanie funkcji


W języku PHP można definiować własne funkcje. Funkcję definiujemy za pomocą słowa kluczowego function, po której następuje nazwa funkcji, następnie w nawiasach okrągłych powinny zostać wymienione argumenty funkcji oddzielone przecinkami. W nawiasach klamrowych jest zapisywana treść funkcji. Definicja funkcji ma postać:


Jeżeli funkcja posiada argumenty, są one zapisane w nawiasach okrągłych jako lista zmiennych oddzielonych przecinkami. Jeżeli funkcja nie posiada argumentów, nawiasy okrągłe powinny pozostać puste. Nazwy funkcji powinny być tworzone zgodnie z zasadami obowiązującymi dla nazw zmiennych i powinny odzwierciedlać to, co funkcja będzie robiła. Nazwa funkcji nie może zaczynać się od znaku $.

Przykład




Przykład

 

Zwracanie wartości przez funkcje


Jeżeli chcemy, aby funkcja zwracała wartość, która będzie wykorzystywana w innych działaniach, należy użyć słowa kluczowego return. Zatrzymuje ona działanie funkcji i zwraca wskazaną wartość do bloku kodu, z którego funkcja została wywołana. Definicja funkcji ze słowem kluczowym return ma postać:


Słowo kluczowe return podane wewnątrz funkcji bez żadnego argumentu powoduje przerwanie działania funkcji.

 

Przykład

 

Zasięg zmiennych


Zasięg zmiennej to obszar, w którym można odwoływać się bezpośrednio do zmiennej. Zmienna może być:

 

  • lokalna
  • globalna



Zmienne globalne


Zmienne globalne są widoczne w całym skrypcie. Są to zmienne, które zostały zdefiniowane poza funkcją. Można z nich korzystać w każdym miejscu skryptu z wyjątkiem wnętrza funkcji.


Przykład


W podanym przykładzie wartość zmiennej $zm nie zostanie wyświetlona. Zmienna ma zasięg globalny, ale została zdefiniowana poza funkcją pokaz( ) , w związku z tym nie ma ona dostępu do zmiennej. Jest to przydatna cecha języka pozwalająca uniknąć konfliktów wynikających ze stosowania takich samych nazw zmiennych używanych w różnych obszarach skryptu. Funkcje wykorzystujące dane zewnętrzne powinny pobierać je w postaci argumentów.


Taki sposób działania zmiennych globalnych jest charakterystyczny dla języka PHP. W większości języków programowania do zmiennych globalnych można odwoływać się z dowolnego miejsca.


Instrukcja global


Jeżeli istnieje konieczność odwołania się do zmiennej globalnej wewnątrz funkcji, można wykorzystać instrukcję global. Przed odwołaniem się do zmiennej należy umieścić konstrukcję:


Za pomocą jednej instrukcji global można zadeklarować w funkcji wiele zmiennych globalnych.

 


Przykład




Inną metodą odwołania do zmiennej globalnej jest odwołanie się do superglobalnej tablicy $GLOBALS. Zawiera ona odwołania do wszystkich zdefiniowanych w skrypcie zmiennych globalnych. Nazwy tych zmiennych są indeksami tablicy $GLOBALS. Odwołanie do tablicy ma postać:


Przykład

 

Posługując się zmiennymi globalnymi, należy zachować szczególną ostrożność, ponieważ każda zmiana ich wartości będzie widoczna w całym skrypcie.



Zmienne lokalne


Zmienne lokalne mają zasięg lokalny i są definiowane wewnątrz funkcji. Ich zasięg dotyczy tylko funkcji, w której zostały zdefiniowane, i poza nią nie są widoczne.


Przykład

 


W podanym przykładzie wartość zmiennej $tx nie zostanie wyświetlona. Zmienna ma zasięg lokalny, została zdefiniowana wewnątrz funkcji tekst() i poza tą funkcją nie istnieje.



Zmienne statyczne


Zmienne statyczne to zmienne lokalne funkcji, które zachowują swoją wartość między wywołaniami funkcji. Domyślnie zmienna lokalna jest tworzona w chwili wywołania funkcji i jest widoczna w obrębie tej funkcji. Gdy funkcja zakończy działanie, zmienna znika. Przy ponownym wywołaniu funkcji zmienna jest tworzona i przypisywana jest jej wartość początkowa.


Przykład

 

W podanym przykładzie przy każdym wywołaniu funkcji funk() wartość zmiennej $i będzie przyjmowała wartość 1, co spowoduje wyświetlenie tego samego komunikatu, mówiącego, że funkcja została wywołana jeden raz.
Jeżeli przy tworzeniu zmiennej zostanie zadeklarowane, że jest to zmienna statyczna, jej wartość zostanie zachowana między kolejnymi wywołaniami funkcji. Deklaracja zmiennej statycznej ma postać:


Przykład



W podanym przykładzie zmienna $i została zadeklarowana jako zmienna statyczna, dlatego przy pierwszym jej wywołaniu zostanie utworzona zmienna statyczna i przy opuszczaniu funkcji jej wartość zostanie zapamiętana. Przy ponownym wywołaniu funkcji instrukcja przypisująca początkową wartość zmiennej będzie ignorowana, a stosowana będzie wartość zapamiętana przy poprzednim wywołaniu funkcji.

 

Argumenty funkcji


Argumenty do funkcji mogą być przekazywane na dwa sposoby:

  • przez wartość
  • za pomocą referencji

 

Argumenty przekazywane przez wartość


Domyślnym sposobem przekazywania argumentów do funkcji jest przekazywanie przez wartość. Ten sposób przekazywania był stosowany w podawanych do tej pory przykładach. W praktyce oznaczało to, że do funkcji przekazywane są kopie argumentów źródłowych i wszystkie operacje wykonywane są na kopiach. Pokazuje to następujący przykład:



W przykładzie została zdefiniowana funkcja wart() z argumentem $lic zba (wartość przekazanej zmiennej jest zwiększana o 3). Przed jej wywołaniem zmienna $liczba została ustawiona na wartość 2 i wyświetlona w celu przetestowania jej stanu. Następnie została wywołana funkcja wart(). Po jej wykonaniu ponownie została wyświetlona zmienna $liczba, aby sprawdzić jej aktualny stan. Wszystkie operacje wewnątrz funkcji odbywały się na kopii zmiennej, natomiast wartość oryginalnej zmiennej nie uległa zmianie.

 


Argumenty przekazywane za pomocą referencji


Jeżeli modyfikowanie kopii przekazanego do funkcji argumentu nie wystarcza, można zastosować przekazywanie argumentów za pomocą referencji. Wtedy funkcja będzie modyfikowała argumenty oryginalne. Przy takim przekazywaniu argumentów przed przekazywanymi argumentami należy umieścić znak & (ampersand).


Przykład



W tym przykładzie wartość zmiennej $liczba będzie inna przed wywołaniem funkcji wart() i inna po jej wywołaniu/

 

Domyślne argumenty funkcji


W języku PHP można tworzyć funkcje, których argumenty będą miały określone wartości domyślne. Mechanizm ten pozwala na wywołanie funkcji bez podawania jej argumentów. Jako argumenty zostaną wstawione wartości zdefiniowane podczas tworzenia funkcji. Jeżeli natomiast argumenty będą podane, funkcja zostanie wywołana z tymi argumentami. Definicja funkcji z argumentami domyślnymi ma postać:



Przykład


Utworzona w przykładzie funkcja posiada zdefiniowany argument domyślny. Przy pierwszym wywołaniu funkcja zostanie wykonana z domyślną wartością argumentu, przy drugim wartość argumentu będzie null, przy trzecim wartość argumentu zostanie ustawiona zgodnie z argumentem wywołania funkcji.


Przykład

 

W podanym przykładzie funkcja styl() posiada dwa argumenty. Pierwszy argument $tekst przekazuje treść tekstu do wyświetlenia, drugi $kolor przekazuje kolor w jakim tekst powinien zostać wyświetlony. Wartość domyślna argumentu $kolor została ustawiona na red. Jeżeli przy wywołaniu funkcji kolor tekstu nie zostanie określony, będzie on wyświetlany w kolorze przekazanym jako argument domyślny (red).


Wartości domyślne można przypisać dowolnej liczbie argumentów Ale jeżeli wartość domyślna zostanie przypisana określonemu argumentowi, to wszystkie następne również muszą posiadać wartości domyślne.

 

Zadania

 

Zadanie 1.

Przetestuj działanie skryptów PHP umieszczonych powyżej.


Zadanie 2.

Napisz funkcję obliczającą pole koła.

 
Zadanie 3.

Napisz funkcję sprawdzającą czy przekazany do niej rok jest przestępny.


Zadanie 4.

Napisz funkcję sprawdzającą czy przekazana do niej liczba jest parzysta.


Zadanie 5.

Napisz funkcję zamieniającą numer dnia na jego nazwę. Zastosuj w niej instrukcję switch.


Zadanie 6.

Napisz funkcję sprawdzającą na podstawie wieku czy osoba jest pełnoletnia.

 

Reklama