V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
KiseXu
V2EX  ›  PHP

为什么要忘记$GLOBALS呢

  •  
  •   KiseXu · Oct 3, 2012 · 4520 views
    This topic created in 4965 days ago, the information mentioned may be changed or developed.
    有人建议我不要使用$GLOBALS,为什么呢。此外有什么替代的解决方案吗
    8 replies    1970-01-01 08:00:00 +08:00
    zooandzoo
        1
    zooandzoo  
       Oct 3, 2012
    在面向对象里,是比较忌讳用$GLOBALS的,因为它破坏封装,它是全局可修改的,这会影响其他使用$GLOBALS功能模块。可以用设计模式来取代,如注册和工厂。在面向过程里用用无所谓了比较方便
    frittle
        2
    frittle  
       Oct 3, 2012
    非OO的话可以用$GLOBALS,OO的话可以靠singleton解决。

    http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html
    gaocheng
        3
    gaocheng  
       Oct 3, 2012
    PHP没有被必要搞得这么复杂,简简单单快速开发就好啦,大家遵循好团队规范就好了
    arzusyume
        4
    arzusyume  
       Oct 3, 2012
    看看discuz的$_G,怎么都高兴不起来吧
    tonyseek
        5
    tonyseek  
       Oct 5, 2012
    全局的问题在于反模块化、反命名空间,可参考 JavaScript 为什么要引入 CommonJS 等。
    tonyseek
        6
    tonyseek  
       Oct 5, 2012
    说错,不是 CommonJS 是 Modules/AMD
    picasso250
        7
    picasso250  
       Oct 17, 2012
    我的方法是OO和过程结合。M部分用OO,模块化的也用OO,就是 router 直接写在 index.php 里面。没有用到任何 $GLOBALS 和 global 关键字。其实我觉得如果 Singleton 一个 App 类,再 run 之,有点脱了裤子放屁的感觉……
    walleve
        8
    walleve  
       Oct 17, 2012
    别被规则约束死.. 依据你现在的理解, 你可以用..用得好就好. 等回头你再发现问题需要重构的时候, 是否修改,到时候也是你说了算. 全局没错, 错的是别陷入在模块化和oo里边.. 还有人反oo呢..
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5886 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 03:18 · PVG 11:18 · LAX 20:18 · JFK 23:18
    ♥ Do have faith in what you're doing.