在看phpcmsv9的代码请教一个问题

发布于 2021-11-13 10:14:34 字数 1001 浏览 459 评论 7

/**
	 * 加载类文件函数
	 * @param string $classname 类名
	 * @param string $path 扩展地址
	 * @param intger $initialize 是否初始化
	 */
	private static function _load_class($classname, $path = '', $initialize = 1) {
		static $classes = array();
		if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';

		$key = md5($path.$classname);
		if (isset($classes[$key])) {
			if (!empty($classes[$key])) {
				return $classes[$key];
			} else {
				return true;
			}
		}
		if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
			include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';
			$name = $classname;
			if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
				include $my_path;
				$name = 'MY_'.$classname;
			}
			if ($initialize) {
				$classes[$key] = new $name;
			} else {
				$classes[$key] = true;
			}
			return $classes[$key];
		} else {
			return false;
		}
	}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

落墨 2021-11-18 15:43:06

经过上面leo118的解释再加上我自己看清楚了代码,我是理解呢!

本王不退位尔等都是臣 2021-11-18 15:32:19

也在用V9,不过你这问题我不懂

看透却不说透 2021-11-17 07:59:41

薯哥,这个是不是只能保住一个实例的记录? 关于$classes变量理解,如果之前实例化过的类,就不需要再实例化呢?但是这个只能保存一个类的实例?

能否归途做我良人 2021-11-15 07:08:23

那这样是不是只能记录一个呢?

倚栏听风 2021-11-15 02:38:04

我看懂了,他的key是不一样的,我理解成都是一样的呢!

彩扇题诗 2021-11-14 17:00:21

判断之前是否已经加载/初始化过这个类,如果加载过就直接返回

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文