W programowaniu PHP, podobnie jak w wielu innych językach programowania, zmienna może być dostępna w różnych zakresach w zależności od miejsca, w którym została zdefiniowana. Rozróżniamy zmienne lokalne, globalne oraz superglobalne. Każdy z tych typów zmiennych ma swoje specyficzne zastosowania i reguły dotyczące zakresu dostępności. W tej lekcji przyjrzymy się bliżej tym rodzajom zmiennych oraz ich zasięgowi w kontekście funkcji w PHP.
Zmienne lokalne
Zmienne lokalne to zmienne zdefiniowane wewnątrz funkcji. Są dostępne tylko i wyłącznie w obrębie tej funkcji i nie są widoczne poza nią. Oznacza to, że zmienne lokalne są tworzone przy wejściu do funkcji i niszczone przy jej opuszczeniu.
Zmienne globalne
Zmienne globalne to zmienne zdefiniowane poza jakąkolwiek funkcją. Aby uzyskać dostęp do zmiennej globalnej wewnątrz funkcji, musimy użyć słowa kluczowego global
przed nazwą zmiennej.
Zmienne superglobalne
PHP oferuje kilka predefiniowanych zmiennych superglobalnych, które są dostępne w każdym zakresie skryptu. Przykładami takich zmiennych są $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_SERVER
itd. Zmienne te są dostępne w każdym miejscu skryptu bez konieczności używania specjalnych słów kluczowych.
Przykład kodu
Poniżej przedstawiam przykład kodu PHP wraz z prostym HTML, który ilustruje użycie zmiennych lokalnych, globalnych oraz superglobalnych w funkcjach.
<?php
// Zmienna globalna
$globalVar = "Jestem zmienną globalną";
function testScope() {
// Użycie zmiennej globalnej wewnątrz funkcji
global $globalVar;
echo "<p>$globalVar</p>";
// Zmienna lokalna
$localVar = "Jestem zmienną lokalną";
echo "<p>$localVar</p>";
}
testScope();
// Próba dostępu do zmiennej lokalnej poza funkcją (spowoduje błąd)
// echo "<p>$localVar</p>";
// Użycie zmiennej superglobalnej
echo "<p>Nazwa serwera: " . $_SERVER['SERVER_NAME'] . "</p>";
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Zakres Zmiennych w PHP</title>
</head>
<body>
<h1>Praca ze zmiennymi w PHP</h1>
<!-- Tutaj można dodać więcej elementów HTML -->
</body>
</html>
W powyższym przykładzie:
- Użyliśmy zmiennej globalnej
$globalVar
wewnątrz funkcjitestScope
dzięki słowu kluczowemuglobal
. - Zdefiniowaliśmy zmienną lokalną
$localVar
wewnątrz funkcjitestScope
, która jest dostępna tylko w tej funkcji. - Wykorzystaliśmy zmienną superglobalną
$_SERVER
do wyświetlenia nazwy serwera, co pokazuje, że zmienne superglobalne są dostępne w każdym miejscu skryptu.
Pamiętaj, że próba dostępu do zmiennej lokalnej poza jej funkcją spowoduje błąd, ponieważ jej zakres jest ograniczony do funkcji, w której została zdefiniowana.