Постараюсь объяснить, почему тапки полетят (если полетят. Тут уже контингент не такой буйный, как бывалоча) Есть технология разработки - TDD, когда каждый новый класс ты пишешь и проектируешь вместе с тестами на него. В реальности - это значит , что ты затрачиваешь дополнительное время, пока пишешь код, но зато основательно экономишь на вылавливании багов. Это сейчас, фактически, основная технология разработки ПО и если ты не понимаешь что это такое и не умеешь в ТДД, то тебя скорее всего не возьмут в команду. Но это лирика, раньше люди жили както жеж и трава была зеленее, не смотря ни на что... Однако та самая технология рекомендует, чтобы класс содержал в себе все зависимости. Ну вот вплоть до драйвера баз данных. Ничего личного. никакой обязаловки, но так его проще окружать тестами. Возникает проблема Dependency Injection, и разные ее решения. Отсюда растут ноги страшненьких и уродливых, по моему скромному мнению, ларавельных конструкторов. Но это тоже лирика, разговор то был про глобальные переменные. Так вот глобальные переменные серьезно мешают проводить тестирование в TDD. Не, есть конечно, разные техники, ходы и способы тестирования, в конце концов старую кодовую базу никто переписывать не собирается, но теперь ты, возможно, не только знаешь, что глобальные переменные - это плохо, но и кто в этом виноват