|
发表于 2012-4-7 10:15:14
|
显示全部楼层
首先 is_loaded()方法是定义在 BATHPATH/core/common.php 中的全局方法。
在全局方法中还有一个 load_class 的全局方法。这个方法是加载类库使用的。在这个方法中每实例化一个类库,都会调用is_loaded()方法,记录加载的类。
你看common.php的源码,is_loaded的方法中定义了一个静态数组,所有加载的类都会记录到里面。你可以在CI_Controller的超级类中打印一下这个数组。print_r(is_loaded());你就明白了。
至于在超级类中自动加载核心类库。这是必须的,因为你所有的controller运行都需要核心类库的支持。这样你自定义的controller就不需要二次加载了。
别的不多说了。至于&get_instance ()
调用get_instance()这么做几乎不消耗资源,因为每次返回的都是一个引用
CI的CI_Controller类用的是单例模式。不管你怎么调用 & get_instance(),系统只有一个实例,不会重复实例化 |
|