在 codeigniter 框架中有一个这样的类(我将它编辑得更清楚,完整的功能在这里http://pastebin.com/K33amh7r):
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
{
static $_classes = array();
// Does the class exist? If so, we're done...
if (isset($_classes[$class]))
{
return $_classes[$class];
}
is_loaded($class);
$_classes[$class] = new $name();
return $_classes[$class];
}
所以,第一次加载类时(传递给这个函数),它将被保存到这个静态变量中。下次加载同一个类时,此函数会检查该类是否已经存在(如果它已经分配给静态,缓存,我不确定它是如何存储在内存中的),如果它存在,则加载它(NOT *实例化*再次 )
据我所知,唯一的目的是节省时间或内存,而不是两次实例化同一个类。
我的问题是:真的实例化一个类会占用内存或消耗加载时间,所以它必须像这样被缓存吗?