帮我看下这个is_loaded是什么意思

石头和面包 发布于 2014/07/03 12:52
阅读 487
收藏 0
<?php
function &load_class($class, $directory = 'libraries', $param = NULL)
	{
		static $_classes = array();
		if (isset($_classes[$class]))
		{
			return $_classes[$class];
		}
		$name = FALSE;
		foreach (array(APPPATH, BASEPATH) as $path)
		{
			if (file_exists($path.$directory.'/'.$class.'.php'))
			{
				$name = 'CI_'.$class;
				if (class_exists($name, FALSE) === FALSE)
				{
					require_once($path.$directory.'/'.$class.'.php');
				}
				break;
			}
		}
		if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php'))
		{
			$name = config_item('subclass_prefix').$class;
			if (class_exists($name, FALSE) === FALSE)
			{
				require_once(APPPATH.$directory.'/'.$name.'.php');
			}
		}
		if ($name === FALSE)
		{
			set_status_header(503);
			echo 'Unable to locate the specified class: '.$class.'.php';
			exit(5); // EXIT_UNK_CLASS
		}
		// Keep track of what we just loaded
		is_loaded($class);
		$_classes[$class] = isset($param)
			? new $name($param)
			: new $name();
		return $_classes[$class];
	}
}
if ( ! function_exists('is_loaded'))
{  function &is_loaded($class = '')
	{
		static $_is_loaded = array();

		if ($class !== '')
		{
			$_is_loaded[strtolower($class)] = $class;
		}
		return $_is_loaded;
	}
}



?>


第37行,那个is_loaded();

加载中
0
南湖船老大
南湖船老大

PHP4时代的代码了,扔了,别看。

看啥不好,偏要看CI这种老古董。你可以看YII啊,Laravel啊

判断是否加载,不是真的去判断PHP引擎是否加载了某个文件,而是在加载的时候放入数组,然后调用的时候看有没有在数组里。

原型如下:

function _requireOnce($file) {
    static $_files = array();
    if (!isset($_files[$file])) {
        if (is_file($file)) {
            require $file;
            $_files[$file] = true;
        } else {
            $_files[$file] = false;
        }
    }
}

注意 static 这个关键字。我的代码和他的代码里都有,这个很关键。

0
纠结名字
代码就不看了,is_loaded()是用来判断是否加载完成的,勿疑!
sxgkwei
sxgkwei
haha ...好经典,+1
0
石头和面包
石头和面包

引用来自“纠结名字”的评论

代码就不看了,is_loaded()是用来判断是否加载完成的,勿疑!
加载完,它怎么处理?没加载完,它怎么处理?有返回值又没有接收又是什么意思。函数前加个引用&有什么用
elarity
elarity
你可以百度一下php 函数引用的概念
返回顶部
顶部