十一)CodeIgniter源码分析之Controller.php

 1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 2 
 3 /**
 4  * CodeIgniter Application Controller Class
 5  */
 6 class CI_Controller {
 7 
 8  private static $instance;
 9 
10  /**
11   * Constructor
12   */
13  public function __construct()
14  {
15   //通过self::$instance实现单例化,在第一次实例时,这个静态变量实质就是引用了这个实例。
16   //以后都可以通过&get_instance();来获得这个单一实例。
17   self::$instance =& $this;
18   
19   //把目前程序已经加载的所有的组件都给这个超级控制器来掌管。
20   foreach (is_loaded() as $var => $class)
21   {
22    $this->$var =& load_class($class);
23   }
24 
25   //给超级控制器加载Loader组件,这个组件是它的好助手,很多时候你会经常用到$this->load->xxx()的形式加载某个东西,
26   //这个load就是控制器被构造的时候就伴随存在的。
27   $this->load =& load_class('Loader', 'core');
28 
29   //初始化Loader组件,详细Loader.php
30   $this->load->initialize();
31   
32   log_message('debug', "Controller Class Initialized");
33  }
34 
35  public static function &get_instance()
36  {
37   return self::$instance;
38  }
39 }
原文地址:https://www.cnblogs.com/qxbj/p/4415250.html