| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | <?phpnamespace daswork;class Loader {    // protected static $instance = [];    // 类名映射    // protected static $map = [];    // 命名空间别名    // protected static $namespaces = [];    // 自动加载的文件    // private static $autoloadFiles = [];    // 命名空间与路径映射    private static $namespaces = [];    // 已加载过的class    protected static $classMap = [];    // 自动加载    private static function autoload($class)    {        // 是否有加载过        if (in_array($class, self::$classMap)) {            return true;        }        if ($file = self::findFile($class)) {            // Win环境严格区分大小写            if (IS_WIN && pathinfo($file, PATHINFO_FILENAME) != pathinfo(realpath($file), PATHINFO_FILENAME)) {                return false;            }            __include_file($file);            $classMap[] = $class;            return true;        }    }        public static function findFile($class)    {        $namespace = \dirname($class);        // 有命名空间映射的          if (isset(self::$namespaces[$namespace])) {            $file = self::$namespaces[$namespace] . basename($class) . EXT;            return $file;        }        // var_dump($class);        // var_dump(substr($class,strpos($class, '\\') + 1));        $model = substr($class,0,strpos($class, '\\'));        // var_dump($model);        if ($model=='app') {            $file = APP_PATH . DS. str_replace('\\', DS, substr($class,strpos($class, '\\') + 1)) . EXT;            // var_dump($file);            return $file;        }    }    // 注册系统自动加载    public static function register($autoload = '')    {        spl_autoload_register($autoload ?: 'daswork\\Loader::autoload', true, true);        self::$namespaces = [            'daswork' => CORE_PATH,            'daswork\db' => CORE_PATH . 'db' . DS        ];    }}/** * 作用范围隔离 * * @param $file * @return mixed */function __include_file($file){    return include $file;}function __require_file($file){    return require $file;}
 |