[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;
}
}
有这个类之后,配合前文中的入口文件,就可以继续了。
接下来我们需要一个路由。