工作生活

php 对象自动加载

2019-06-30  本文已影响0人  gsunneverdie
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.';
        }
    }
}
流程
上一篇 下一篇

猜你喜欢

热点阅读