无聊更新了一下一个加载类函数可自动和手动
2年前
<?php
//作用:用于自动调用类实例化文件或者手动引入加载
function load($className){
//获取全局配置信息变量
global $config;
//检查类名称是否为字母
if (STR(str_replace('\\','', $className)) == false){
//写入日志
XLOG($className."类名不符合规则(引入)");
echo exit($className."类名不符合规则");
}
//判断加载方式是否配置
$xmjz = $config['xmjz'] ?? 'xmhb';
//检查类名称是否为字母
if (STR($xmjz) == false){
echo exit("加载配置信息必须为字符串");
}
//自动加载和手动加载判断
switch ($xmjz)
{
//自动
case 'xmzd':
//替换命名空间中\为/
$className = str_replace('\\','/', $className);
//进行参数过滤
$className= A($className,'xssreplace');
//路径拼接
$lujing = APP_PATH.$className.'.php';
break;
//手动
case 'xmsd':
//判断自定义配置文件是否存在
if(file_exists(APP_PATH.'config/class.php')){
//自定义配置信息文件
$classpz = include_once APP_PATH.'config/class.php';
//替换命名空间中\为/
$className = str_replace('\\','/', $className);
$nameclass = $classpz[$className] ?? null;
if ($nameclass == null){
echo exit("没有找到手动加载类");
}
//进行参数过滤
$className= A($nameclass,'xssreplace');
//路径拼接
$lujing = APP_PATH.$nameclass.'.php';
}else{
echo exit('手动加载配置文件不存在');
}
break;
//自动和手动
default:
//判断自定义配置文件是否存在
if(file_exists(APP_PATH.'config/class.php')){
//自定义配置信息文件
$classpz = include_once APP_PATH.'config/class.php';
//替换命名空间中\为/
$className = str_replace('\\','/', $className);
$nameclass = $classpz[$className] ?? null;
if ($nameclass == null){
echo exit("没有找到手动加载类");
}
//进行参数过滤
$className= A($nameclass,'xssreplace');
//路径拼接
$lujing = APP_PATH.$classpz[$className].'.php';
}else{
//替换命名空间中\为/
$className = str_replace('\\','/', $className);
//进行参数过滤
$className= A($className,'xssreplace');
//路径拼接
$lujing = APP_PATH.$className.'.php';
}
}
//判断文件是否存在
if(!file_exists($lujing)){
//写入日志
XLOG($className."类文件不存在(引入)");
echo exit($className."类文件不存在");
}
//引入文件
include_once _include($lujing);
}
spl_autoload_register('load');