← 文章

[PHP框架从零到一] - 自动加载类

自动加载简单考虑的话,需要一个数组存放自动加载目录。
并使用系统函数spl_autoload_register注册自定义的自动加载函数。
自动加载要符合psr规范

<?php

/**
* 自动加载类 
*/
class Loader
{
	// 自动加载搜索目录
	private static $loadPaths = [];

	// 添加自动加载路径
	public static function addAutoLoadPath($path)
	{
		self::$loadPaths[] = $path;
	}

	// 注册自动加载函数
	public static function register()
	{
		spl_autoload_register('self::autoload');
	}

	// 自动加载函数
	public static function autoload($className)
	{
		$className = str_replace(['\\', '_'], DIRECTORY_SEPARATOR, $className);
		foreach (self::$loadPaths as $loadPath) {
			$loadPath = rtrim($loadPath, DIRECTORY_SEPARATOR);
			$path = $loadPath . DIRECTORY_SEPARATOR . $className . '.php';
			if (self::import($path)) {
				break;
			}
		}
	}

	// 包含一个已存在的文件
	public static function import($path)
	{
		return file_exists($path) ? include_once($path) : false;
	}

}

有这个类之后,配合前文中的入口文件,就可以继续了。
接下来我们需要一个路由。

评论

还没有评论