为什么要忘记$GLOBALS呢

2012-10-03 16:51:44 +08:00
 KiseXu
有人建议我不要使用$GLOBALS,为什么呢。此外有什么替代的解决方案吗
3972 次点击
所在节点    PHP
8 条回复
zooandzoo
2012-10-03 18:51:04 +08:00
在面向对象里,是比较忌讳用$GLOBALS的,因为它破坏封装,它是全局可修改的,这会影响其他使用$GLOBALS功能模块。可以用设计模式来取代,如注册和工厂。在面向过程里用用无所谓了比较方便
frittle
2012-10-03 19:11:25 +08:00
非OO的话可以用$GLOBALS,OO的话可以靠singleton解决。

http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html
gaocheng
2012-10-03 20:03:56 +08:00
PHP没有被必要搞得这么复杂,简简单单快速开发就好啦,大家遵循好团队规范就好了
arzusyume
2012-10-03 22:51:08 +08:00
看看discuz的$_G,怎么都高兴不起来吧
tonyseek
2012-10-05 22:35:13 +08:00
全局的问题在于反模块化、反命名空间,可参考 JavaScript 为什么要引入 CommonJS 等。
tonyseek
2012-10-05 22:41:52 +08:00
说错,不是 CommonJS 是 Modules/AMD
picasso250
2012-10-17 17:22:19 +08:00
我的方法是OO和过程结合。M部分用OO,模块化的也用OO,就是 router 直接写在 index.php 里面。没有用到任何 $GLOBALS 和 global 关键字。其实我觉得如果 Singleton 一个 App 类,再 run 之,有点脱了裤子放屁的感觉……
walleve
2012-10-17 17:42:04 +08:00
别被规则约束死.. 依据你现在的理解, 你可以用..用得好就好. 等回头你再发现问题需要重构的时候, 是否修改,到时候也是你说了算. 全局没错, 错的是别陷入在模块化和oo里边.. 还有人反oo呢..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/49177

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX