谁能反对经验、大学学位和软件工程?不是我。我只想说,在开发面向对象的单页PHP应用程序时,当我知道可以从头构建整个程序而不必担心命名空间冲突时,我会感到更有趣。从零开始建造是许多人不再做的事。他们有一份工作,一个截止日期,一个奖金,或者一个值得关心的名声。这些类型倾向于使用大量预先构建的代码,风险很大,因此它们根本不能冒险使用全局变量。
使用全局变量可能不太好,即使它们仅用于程序的全局区域,但我们不要忘记那些只想使用全局变量的人。找点乐子做点事.
如果这意味着在全局命名空间中使用几个变量(<10),那么只能在程序的全局区域使用,所以就这样吧。是的,MVC,依赖注入,外部代码,等等。但是,如果您已经将99.99%的代码包含到名称空间和类中,并且外部代码是沙箱的,那么如果使用全局变量,世界就不会结束(重复一遍,世界不会结束)。
通常,我不会说使用全局变量是不良做法..我想说的是,在程序的全局区域之外使用全局变量(标志等)是自找麻烦(从长远来看)不明智因为你很容易失去他们的状态。另外,我想说你学得越多,你就越不需要依赖。关于全局变量,因为您将体验到跟踪与其使用相关的bug的“乐趣”。这本身就会激励你寻找另一种方法来解决同样的问题。巧合的是,这会推动PHP人员学习如何使用名称空间和类(静态成员等.)。
计算机科学领域广阔。如果我们吓跑每个人去做某事因为我们给它贴上标签坏的然后他们就失去了真正理解标签背后的推理的乐趣。
如果必须使用全局变量,则使用全局变量,然后查看是否可以在没有它们的情况下解决问题。当您深入了解问题的真正本质时,冲突、测试和调试意味着更多,而不仅仅是对问题的描述。