Zasięg zmiennych w funkcjach
Zasięg zmiennej określa, gdzie w programie dana zmienna jest dostępna. W PHP istnieją trzy główne rodzaje zasięgu zmiennych: lokalny, globalny i statyczny.
Zasięg lokalny
Zmienne zdefiniowane wewnątrz funkcji mają zasięg lokalny, co oznacza, że są dostępne tylko wewnątrz tej funkcji i nie można ich użyć poza nią. Każda zmienna stworzona wewnątrz funkcji jest oddzielona od zmiennych o tej samej nazwie istniejących poza funkcją.
Przykład:
<?php function powitanie() { $imie = "Jan"; echo "Cześć, " . $imie; } powitanie(); // Wyświetli: Cześć, Jan echo $imie; // Spowoduje błąd, ponieważ $imie jest zmienną lokalną ?>
Zmienne utworzone wewnątrz funkcji (takie jak $imie
w powyższym przykładzie) istnieją tylko podczas wykonywania funkcji. Po zakończeniu działania funkcji, zmienna zostaje usunięta z pamięci.
Zasięg globalny
Zmienne globalne są dostępne w całym skrypcie, ale funkcje nie mają do nich dostępu domyślnie. Aby uzyskać dostęp do zmiennej globalnej wewnątrz funkcji, należy użyć słowa kluczowego global.
Przykład:
<?php $imie = "Jan"; function powitanie() { global $imie; echo "Cześć, " . $imie; } powitanie(); // Wyświetli: Cześć, Jan ?>
W tym przykładzie zmienna $imie
jest zmienną globalną, ale aby uzyskać do niej dostęp w funkcji powitanie
, musimy ją zadeklarować jako globalną wewnątrz funkcji.
Zasięg statyczny
Zmienna statyczna w funkcji jest inicjalizowana tylko raz i zachowuje swoją wartość pomiędzy kolejnymi wywołaniami funkcji. Jest to przydatne, gdy chcemy, aby wartość zmiennej była pamiętana w różnych iteracjach funkcji.
Przykład:
<?php function licznik() { static $liczba = 0; $liczba++; echo $liczba; } licznik(); // Wyświetli: 1 licznik(); // Wyświetli: 2 licznik(); // Wyświetli: 3 ?>
Zmienna $liczba
zostanie zainicjowana tylko raz, a jej wartość będzie pamiętana pomiędzy kolejnymi wywołaniami funkcji.
Argumenty z wartościami domyślnymi
PHP umożliwia ustawienie wartości domyślnych dla argumentów funkcji. Oznacza to, że jeśli wywołasz funkcję bez podania wartości dla tych argumentów, PHP automatycznie przypisze im wartości domyślne. Jest to bardzo przydatne, gdy chcesz, aby funkcja działała nawet wtedy, gdy nie podasz wszystkich danych.
Przykład:
<?php function powitanie($imie = "gość", $wiek = 18) { echo "Cześć, " . $imie . "! Masz " . $wiek . " lat.<br>"; } powitanie(); // Wyświetli: Cześć, gość! Masz 18 lat. powitanie("Anna"); // Wyświetli: Cześć, Anna! Masz 18 lat. powitanie("Piotr", 25); // Wyświetli: Cześć, Piotr! Masz 25 lat. ?>
W powyższym przykładzie funkcja powitanie
ma dwa argumenty z wartościami domyślnymi: $imie
i $wiek
. Jeśli nie przekażesz argumentów podczas wywoływania funkcji, PHP użyje wartości domyślnych ("gość"
i 18
). Jeśli podasz jeden argument, tylko ten zostanie zmieniony, a wartość domyślna dla drugiego zostanie zachowana.
Funkcje zwracające wiele wartości
Chociaż PHP może zwracać tylko jedną wartość z funkcji, można wykorzystać tablice do zwracania wielu wartości jednocześnie. Tablice umożliwiają przekazywanie różnych typów danych jako wynik działania funkcji, co pozwala na elastyczniejsze programowanie.
Przykład:
<?php function podziel($liczba1, $liczba2) { $iloraz = $liczba1 / $liczba2; $reszta = $liczba1 % $liczba2; return array($iloraz, $reszta); } list($iloraz, $reszta) = podziel(10, 3); echo "Iloraz: " . $iloraz . "<br>"; // Wyświetli: Iloraz: 3.3333... echo "Reszta: " . $reszta; // Wyświetli: Reszta: 1 ?>
W powyższym przykładzie funkcja podziel
zwraca tablicę zawierającą dwa elementy: iloraz i resztę z dzielenia. Funkcja list()
pozwala na przypisanie tych dwóch wartości do oddzielnych zmiennych. Dzięki temu można uzyskać więcej informacji z jednego wywołania funkcji, co sprawia, że kod jest bardziej zwięzły i łatwiejszy w obsłudze.
Referencje w argumentach funkcji
Domyślnie argumenty są przekazywane do funkcji przez wartość, co oznacza, że funkcja pracuje na kopii przekazanej zmiennej. Oznacza to, że zmiany dokonane w funkcji nie mają wpływu na oryginalną zmienną. Możemy jednak przekazywać argumenty przez referencję, co pozwala na modyfikację oryginalnej zmiennej wewnątrz funkcji.
Aby przekazać argument przez referencję, należy dodać symbol &
przed nazwą argumentu w deklaracji funkcji.
Przykład:
<?php function zwiększ_o_jeden(&$liczba) { $liczba++; } $x = 5; zwiększ_o_jeden($x); echo $x; // Wyświetli: 6 ?>
W tym przykładzie funkcja zwiększ_o_jeden
przyjmuje argument przez referencję, co oznacza, że zmienna $x
zostanie bezpośrednio zmodyfikowana wewnątrz funkcji. Wynikiem wywołania funkcji będzie zwiększenie wartości zmiennej $x
o 1.
Podsumowanie
W tej lekcji omówiliśmy dodatkowe podstawy funkcji w PHP, koncentrując się na zasięgu zmiennych, argumentach z wartościami domyślnymi, zwracaniu wielu wartości i użyciu referencji w funkcjach. Te aspekty są kluczowe dla zrozumienia, jak efektywnie wykorzystywać funkcje w codziennym programowaniu.
Gratulacje! Ukończyłeś lekcję 5.
Przejdź teraz do lekcji 6 >> Praca z formularzami HTML w PHP
Spis Treści - darmowy kurs PHP
Wprowadzenie: Instalacja środowiska PHP
Lekcja 1: Podstawy składni PHP
Lekcja 2: Funkcje i instrukcje warunkowe w PHP
Lekcja 3: Pętle w PHP
Lekcja 4: Tablice w PHP
Lekcja 5: Dodatkowe podstawy funkcji w PHP
Lekcja 6: Praca z formularzami HTML w PHP
Lekcja 7: Obsługa plików w PHP
Lekcja 8: Sesje i ciasteczka w PHP
Lekcja 9: Podstawy operacji na bazach danych MySQL z PHP
Lekcja 10: Prepared Statements w PHP i bezpieczeństwo aplikacji
Lekcja 11: Zarządzanie użytkownikami – rejestracja, logowanie i autoryzacja w PHP
Lekcja 12: Wzorce projektowe w PHP – wprowadzenie do wzorca MVC
Lekcja 13: Zaawansowane techniki pracy z bazami danych w PHP
Lekcja 14: Testowanie jednostkowe w PHP z PHPUnit
Lekcja 15: Tworzenie i korzystanie z API RESTful w PHP
Lekcja 16: Obsługa plików JSON i XML w PHP
Dodatki
- Spis najważniejszych funkcji PHP