Чем переменные static отличаются от global в PHP при использовании функций?
Чем статические переменные static (статик) отличаются от глобальный global (глобал) в PHP?
Не буду грузить вас теорией. Все покажу на примерах. Они наглядны и понятны:
Сначала обычный вариант функции с обычной переменной в функции. Она локальна и вне функции не видима:
Затем объявим внутри функции эту переменной static. Теперь она будет сохранять свое значение, но только внутри функции. Снаружи функции эта переменная не будет доступна:
Ну а переменная global действует таким образом:
Сначала обычный вариант функции с обычной переменной в функции. Она локальна и вне функции не видима:
function Test(){
$a = 0;
echo $a++;
}
Test (); // Выведет 0
Test (); // Выведет 0
Test (); // Выведет 0
Затем объявим внутри функции эту переменной static. Теперь она будет сохранять свое значение, но только внутри функции. Снаружи функции эта переменная не будет доступна:
function Test(){
static $a = 0;
echo $a++;
}
Test (); // Выведет 0
Test (); // Выведет 1
Test (); // Выведет 2
// внимание, в функции мы приравниваем $a к нулю. Но она все равно прибавляется.
// Приравнивание к нулю только !!при первом обращении!!
Ну а переменная global действует таким образом:
function Test(){
global $a, $b; // теперь их значения стали видны и внутри функции, без слова globaл этих переменных не было бы
$b = $a + $b;
}
$a = 1; $b = 2;
Test ();
echo $b; // Выведет 3
Оставить свой ответ: