我們開始分析core/Controller.php。
在開發application時,在model、controller等地方會寫到的$this就是繼承這個本體物件。
甚至在撰寫library時,常常為了使用ci本身的helper、model等功能,寫出 $this->ci =& get_instance() 這樣的程式碼。
 $class)
		{
			$this->$var =& load_class($class);
		}
    
將之前載入的類別全部與這個物件接在一起。
開發者因而可以使用$this->router、$this->uri、$this->config等成員變數。
不過,開發者想要繼續用$RTR =& load_class('Router', 'core')以及$URI =& load_class('URI', 'core')這種寫法,也是可以啦。
    
    

		$this->load =& load_class('Loader', 'core');

		$this->load->initialize();
		
		log_message('debug', "Controller Class Initialized");
	}
    
最後載入Loader類別,開發者讀取model、library、helper等類別都靠它。
參見:統一的載入介面:core/Loader.php
那一行$this->load->initialize()很莫名其妙。前面用load_class載入類別,並不會在之後呼叫任何初始化函數,而是直接寫在建構式內。
這邊卻是在Loader類別的建構式執行一些動作,之後呼叫initialize再執行一些動作。
也就是說「load_class」到底是純粹載入類別?還是載入的同時順便執行初始工作?
可說是多此一舉,並且意義不一致。


	public static function &get_instance()
	{
		return self::$instance;
	}
}
// END Controller class

/* End of file Controller.php */
/* Location: ./system/core/Controller.php */