TOP-framework/framework/library/Loader.php

55 lines
1.6 KiB
PHP

<?php
namespace framework\library;
class Loader {
// 已加载的文件
private static $files;
// 模型类实例
private static $classInstance = [];
/**
* 文件自动加载
*/
public static function register() {
$autoload = function ($className = '') {
// 文件从未被加载过
if (!isset(self::$files[$className])) {
$classPath = str_replace('\\', '/', $className);
$file = BASEDIR . '/' . $classPath . '.php';
if (file_exists($file)) {
// 文件存在
self::$files[$className] = $file;
require $file;
} else if (file_exists(BASEDIR . '/composer.json')) {
self::$files[$className] = $file;
} else {
return false;
}
}
return true;
};
spl_autoload_register($autoload);
}
/**
* 手动加载模型
* @param $name
* @param string $module
* @return mixed
*/
public static function model($name, $module = '') {
(!$module) && $module = Register::get('Router')->module;
if (!isset(self::$classInstance[$module . $name])) {
$className = '\\' . APPNS . '\\' . $module . '\\model\\' . $name;
if (class_exists($className)) {
self::$classInstance[$module . $name] = new $className();
} else {
self::$classInstance[$module . $name] = new Model($name);
}
}
return self::$classInstance[$module . $name];
}
}