namespace App;
class Think
{
public static function start() {
spl_autoload_register('App\Think::autoload');
}
public static function autoload($class) {
// App => src
$class = str_replace('App', 'src', $class);
$namespace = '';
$className = '';
if (false !== $lastNsPos = strripos($class, "\\")) { // 从后倒数'\\'的位置
$namespace = substr($class, 0, $lastNsPos); // 分割出命名空间
$className = substr($class, $lastNsPos + 1); // 分割出类名
}
$namespace = str_replace("\\", DIRECTORY_SEPARATOR, $namespace);
$fullFileName = $namespace . DIRECTORY_SEPARATOR . $className . '.php'; // 组合成php后缀文件
if (file_exists($fullFileName)) {
echo '<br>自动加载<br>';
echo $fullFileName . "<br>";
require $fullFileName; // 加载文件
} else {
echo 'Class "'.$className.'" does not exist.';
}
}
}
流程
- 从
new App\\xxx\\XXXClass
中分割出命名空间
与类名
- 添加
.php
组成文件形式
- 使用
requrie *
加载文件
网友评论