Zakres zmiennych PHP
Zakres zmiennych PHP
W PHP zmienne można deklarować w dowolnym miejscu skryptu.
Zakres zmiennej to część skryptu, do której można się odwoływać/użyć do zmiennej.
PHP ma trzy różne zakresy zmiennych:
- lokalny
- światowy
- statyczny
Zakres globalny i lokalny
Zmienna zadeklarowana poza funkcją ma ZAKRES GLOBALNY i jest dostępna tylko poza funkcją:
Przykład
Zmienna o zasięgu globalnym:
<?php
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
?>
Zmienna zadeklarowana w funkcji ma ZAKRES LOKALNY i jest dostępna tylko w ramach tej funkcji:
Przykład
Zmienna o zasięgu lokalnym:
<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
?>
Możesz mieć zmienne lokalne o tej samej nazwie w różnych funkcjach, ponieważ zmienne lokalne są rozpoznawane tylko przez funkcję, w której są zadeklarowane.
PHP globalne słowo kluczowe
Słowo global
kluczowe służy do dostępu do zmiennej globalnej z poziomu funkcji.
Aby to zrobić, użyj global
słowa kluczowego przed zmiennymi (wewnątrz funkcji):
Przykład
<?php
$x = 5;
$y = 10;
function myTest()
{
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
PHP przechowuje również wszystkie zmienne globalne w tablicy o nazwie
. Zawiera nazwę zmiennej. Ta tablica jest również dostępna z poziomu funkcji i może być używana do bezpośredniego aktualizowania zmiennych globalnych.$GLOBALS[index]
index
Powyższy przykład można przepisać w ten sposób:
Przykład
<?php
$x = 5;
$y = 10;
function myTest()
{
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
?>
PHP Statyczne słowo kluczowe
Normalnie, gdy funkcja jest zakończona/wykonana, wszystkie jej zmienne są usuwane. Czasami jednak chcemy, aby zmienna lokalna NIE została usunięta. Potrzebujemy go do dalszej pracy.
Aby to zrobić, użyj static
słowa kluczowego podczas pierwszej deklaracji zmiennej:
Przykład
<?php
function myTest()
{
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
Następnie za każdym razem, gdy funkcja jest wywoływana, zmienna ta nadal będzie zawierała informacje, które zawierała z ostatniego wywołania funkcji.
Uwaga: Zmienna jest nadal lokalna dla funkcji.