日常开发最经常写的就是controller,我们所写的controller都是CI_Controller的子类。

class CI_Controller {
    // 缓存controller实例本身
    private static $instance;

    public function __construct()
    {
        // 把自身挂到```$instance```这个静态属性上
        self::$instance =& $this;

        // 把引导文件实例化的类挂载到controller实例上
        foreach (is_loaded() as $var => $class)
        {
            $this->$var =& load_class($class);
        }

        // 加载加载器类
        $this->load =& load_class('Loader', 'core');
        $this->load->initialize();
        log_message('info', 'Controller Class Initialized');
    }

    // 返回controller单例
    public static function &get_instance()
    {
        return self::$instance;
    }

}

controller基类上的静态方法get_instance我们自身用得少,用的多的是全局函数get_instance:

function &get_instance()
{
    return CI_Controller::get_instance();
}

全局函数get_instance是对CI_Controller的静态方法get_instance的一层包装。

results matching ""

    No results matching ""