用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4085|回复: 0
收起左侧

[中级] CodeIgniter源码阅读(4)Controller.php

[复制链接]
发表于 2012-3-29 15:57:43 | 显示全部楼层 |阅读模式
本帖最后由 actionbi 于 2012-3-29 16:00 编辑

Controller.php中定义了CI_Controller类。比我想象中的要简单很多。
因为这个CI_Controller类是以后所有controller的父类。
很明显,CI_Controller类的构造使用了单例设计模式。
目的是为了让controller不断被构造时,不会因反复创建副本,而是给出一个引用,也就是&instrance。

好处就是单例类不会重复占用内存和系统资源而是让应用程序的其他部分更好的使用这些资源。
CI_Controller的构造过程中加载了system/core下面所有的核心库文件。

本人初读CI源码,目光浅短。望各位大牛指正。actionbi2010@gmail.com

PHP复制代码
 
class CI_Controller {      
 private static $instance;    
    /**         * Constructor         */        
public function __construct()      
  {              
 self::$instance =& $this;                        
       foreach (is_loaded() as $var => $class)
               {
                        $this->$var =& load_class($class);
                }
               $this->load =& load_class('Loader', 'core');
                $this->load->initialize();
                log_message('debug', "Controller Class Initialized");
        }
        public static function &get_instance()
        {
                return self::$instance;
        }}
 
复制代码




本版积分规则