Одна хорошая идея в программировании - думать о функциях как о единицах, которые зависят только от входов и влияют только на выходы (и, возможно, объект, к которому они обращаются). Это также один из основных принципов функционального программирования.
Основным принципом c t enet функционального программирования является то, что, насколько это возможно, вычисления должны быть чистыми, в том смысле, что единственный эффект выполнения должен состоять в том, чтобы произвести результат: он не должен иметь побочных эффектов, таких как ввод / вывод, присваивания изменяемым переменным, указатели перенаправления и т. д. c. Например, если императивная функция сортировки может взять список чисел и переставить свои указатели, чтобы упорядочить список по порядку, функция чистой сортировки возьмет исходный список и вернет новый список, содержащий те же числа в отсортированном порядке.
Из Основы программного обеспечения книга.
Чтение и запись глобальных переменных в разных частях и единицах сделает код неисправным, трудным для чтения / понимания, трудным для понимания и т. Д. c. Было бы неплохо работать с ними только в одной части кода, а не с какими-либо функциями, методами и т. Д. c. С этой точки зрения это действительно хорошо, чтобы не читать $_GET
, $_POST
, и т. Д. c. внутри __construct
или любых других методов напрямую и передавайте их откуда-то, известному программисту и людям, работающим над проектом. Это становится более критичным c, когда речь идет о записи, т. Е. В переменной $_SESSION
. Представьте, что значение $_SESSION
содержит некоторые нежелательные данные, и вам необходимо выяснить, какая часть кода отвечает за проблему. Если в коде много частей, которые изменяют переменную $_SESSION
, процессы отладки будут очень сложными.
Так что, на мой взгляд, очень хорошо не использовать глобальные переменные, насколько это возможно.