Хто може сперечатися з досвідом, вищими ступенями та програмною інженерією? Не я. Я б сказав лише, що при розробці об’єктно-орієнтованих односторінкових додатків PHP я отримую більше задоволення, коли знаю, що можу побудувати все це з нуля, не турбуючись про колізії простору імен. Будівництво з нуля - це те, що багато людей більше не роблять. Вони мають роботу, термін, премію чи репутацію, про яку слід піклуватися. Ці типи, як правило, використовують настільки багато вбудованого коду з високими ставками, що вони взагалі не можуть ризикувати використанням глобальних змінних.
Може бути погано використовувати глобальні змінні, навіть якщо вони використовуються лише в глобальній області програми, але не будемо забувати про тих, хто просто хоче розважитися і змусити щось працювати .
Якщо це означає використання кількох змінних (<10) у глобальному просторі імен, які використовуються лише у глобальній області програми, нехай буде так. Так, так, MVC, введення залежностей, зовнішній код, бла, бла, бла, бла. Але якщо ви вмістили 99,99% коду у простори імен та класи, а зовнішній код укладено в середовище, світ не закінчиться (повторюю, світ не закінчиться), якщо ви використовуєте глобальну змінну.
Як правило, я б не сказав, що використання глобальних змінних є поганою практикою . Я б сказав, що використання глобальних змінних (прапори та подібні) поза глобальною зоною програми вимагає неприємностей і (в довгостроковій перспективі) непродуктивних, оскільки ви можете досить легко втратити їх стан. Крім того, я б сказав, що чим більше ви дізнаєтесь, тим менше ви будете покладатися на глобальні змінні, оскільки ви відчуєте "радість" відстеження помилок, пов'язаних з їх використанням. Це одне спонукає вас знайти інший спосіб вирішити ту саму проблему. За збігом обставин це, як правило, штовхає людей, що працюють на PHP, у напрямку до вивчення використання просторів імен та класів (статичні члени тощо).
Область інформатики величезна. Якщо ми відлякуємо всіх від того, щоб щось робити, бо ми називаємо це поганим , вони втрачають задоволення від справжнього розуміння міркувань, що лежать позаду.
Якщо потрібно, використовуйте глобальні змінні, але тоді подивіться, чи зможете ви вирішити проблему без них. Зіткнення, тестування та налагодження означають більше, коли ти глибоко розумієш справжню природу проблеми, а не просто опис проблеми.