Глобальні змінні доступні в будь-який час в будь-якій частині програми і не потребують передачі.
Попередження:** Добре спроектований додаток не повинен використовувати глобальні змінні, оскільки вони порушують принцип інкапсуляції і при необережному поводженні з ними можуть призвести до важко виявлених помилок.
Приклад використання:
$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
Завдяки цьому ми можемо викликати функцію динамічно з різними вхідними параметрами і її вихід буде залежати тільки від вхідних даних, а не від оточення.
Мабуть, єдиним розумним застосуванням глобальних змінних є розбір користувацького вводу, в цьому випадку мова йде про суперглобальні змінні.
В даному випадку це чиста конструкція, оскільки змінна повинна бути доступна тільки для читання, а не тільки для запису, і до того ж вона однакова в усьому додатку:
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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | uk