PHP Manual

Глобальні змінні в PHP

22. 08. 2019

Глобальні змінні доступні в будь-який час в будь-якій частині програми і не потребують передачі.

Попередження:** Добре спроектований додаток не повинен використовувати глобальні змінні, оскільки вони порушують принцип інкапсуляції і при необережному поводженні з ними можуть призвести до важко виявлених помилок.

Приклад використання:

$a = 1;
$b = 2;
function suma(): void
{
global $a, $b;
$b = $a + $b;
}
suma();
echo $b; // виводить число 3, тому що змінна $b є глобальною

Зауважимо, що ми отримали змінні $a та $b поза їх природним контекстом. Така поведінка називається "магічною", тому що якщо інша функція перевизначить змінні, що використовуються в даний момент, то програма зіткнеться з неочікуваним станом.

Правильно, програма повинна інкапсулювати і передавати змінні кожного разу:

$a = 1;
$b = 2;
function suma(int $a, int $b): int
{
return $a + $b;
}
echo suma($a, $b); // виводить 3

Завдяки цьому ми можемо викликати функцію динамічно з різними вхідними параметрами і її вихід буде залежати тільки від вхідних даних, а не від оточення.

Отримання вхідних параметрів з URL-адреси

Мабуть, єдиним розумним застосуванням глобальних змінних є розбір користувацького вводу, в цьому випадку мова йде про суперглобальні змінні.

В даному випадку це чиста конструкція, оскільки змінна повинна бути доступна тільки для читання, а не тільки для запису, і до того ж вона однакова в усьому додатку:

function getNameFromUrl(): string
{
return isset($_GET['ім'я'])
? htmlspecialchars($_GET['ім'я'])
: '';
}
echo getNameFromUrl();

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
4.
Status:
All systems normal.
2024