1
zooandzoo 2012-10-03 18:51:04 +08:00
在面向对象里,是比较忌讳用$GLOBALS的,因为它破坏封装,它是全局可修改的,这会影响其他使用$GLOBALS功能模块。可以用设计模式来取代,如注册和工厂。在面向过程里用用无所谓了比较方便
|
2
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 |
3
gaocheng 2012-10-03 20:03:56 +08:00
PHP没有被必要搞得这么复杂,简简单单快速开发就好啦,大家遵循好团队规范就好了
|
4
arzusyume 2012-10-03 22:51:08 +08:00
看看discuz的$_G,怎么都高兴不起来吧
|
5
tonyseek 2012-10-05 22:35:13 +08:00
全局的问题在于反模块化、反命名空间,可参考 JavaScript 为什么要引入 CommonJS 等。
|
6
tonyseek 2012-10-05 22:41:52 +08:00
说错,不是 CommonJS 是 Modules/AMD
|
7
picasso250 2012-10-17 17:22:19 +08:00
我的方法是OO和过程结合。M部分用OO,模块化的也用OO,就是 router 直接写在 index.php 里面。没有用到任何 $GLOBALS 和 global 关键字。其实我觉得如果 Singleton 一个 App 类,再 run 之,有点脱了裤子放屁的感觉……
|
8
walleve 2012-10-17 17:42:04 +08:00
别被规则约束死.. 依据你现在的理解, 你可以用..用得好就好. 等回头你再发现问题需要重构的时候, 是否修改,到时候也是你说了算. 全局没错, 错的是别陷入在模块化和oo里边.. 还有人反oo呢..
|