没有赋值给变量的PHP类的实例化

1 php codeigniter

我在Codeigniter HMVC扩展(通过Wiredesignz)中得到了这行代码,其中一个类被实例化而没有被赋值给变量(Base.php中的类CI)

代码 :

class CI extends CI_Controller
{
  public static $APP;

  public function __construct() {

    /* assign the application instance */
    self::$APP = $this;

    global $LANG, $CFG;

    /* re-assign language and config for modules */
    if ( ! is_a($LANG, 'MX_Lang')) $LANG = new MX_Lang;
    if ( ! is_a($CFG, 'MX_Config')) $CFG = new MX_Config;

    parent::__construct();
  }
}

/* create the application object */
new CI;
Run Code Online (Sandbox Code Playgroud)

这项技术的名称是什么?这意味着什么?

Kin*_*nch 5

这没有名称,暗示是,构造函数肯定做得太多了.一个人想要创建一个类的实例而不引用它的原因是,他只希望构造函数想要执行,但仅此而已.这意味着,构造函数"做"某事,但构造函数应该只确保一个对象处于稳定/有效状态而已.

简而言之:不要以为这是一个好习惯.在globalself::$APP = $this证实了我认为这是一个糟糕的一段代码.