为了账号安全,请及时绑定邮箱和手机立即绑定

Loader.php-4

标签:
PHP

// 注册composer自动加载

private static function registerComposerLoader()

{// 默认没有 ,不会执行

    if (is_file(VENDOR_PATH . 'composer/autoload_namespaces.php')) {

        $map = require VENDOR_PATH . 'composer/autoload_namespaces.php';

        foreach ($map as $namespace => $path) {

            self::addPsr0($namespace, $path);

        }

    }// 加载命名空间

 

    if (is_file(VENDOR_PATH . 'composer/autoload_psr4.php')) {

        $map = require VENDOR_PATH . 'composer/autoload_psr4.php';

        foreach ($map as $namespace => $path) {

            self::addPsr4($namespace, $path);

        }

    }// 加载 Psr4 标准

 

    if (is_file(VENDOR_PATH . 'composer/autoload_classmap.php')) {

        $classMap = require VENDOR_PATH . 'composer/autoload_classmap.php';

        if ($classMap) {

            self::addClassMap($classMap);

        }

    }// 加载 classmap

 

    if (is_file(VENDOR_PATH . 'composer/autoload_files.php')) {

        $includeFiles = require VENDOR_PATH . 'composer/autoload_files.php';

        foreach ($includeFiles as $fileIdentifier => $file) {

            if (empty(self::$autoloadFiles[$fileIdentifier])) {

                __require_file($file);

                self::$autoloadFiles[$fileIdentifier] = true;

            }

        }

    }// 加载 文件

}

 

/**

 * 导入所需的类库 同java的Import 本函数有缓存功能

 * @param string $class   类库命名空间字符串

 * @param string $baseUrl 起始路径

 * @param string $ext     导入的文件扩展名

 * @return boolean

 */

public static function import($class, $baseUrl = '', $ext = EXT)

{// 导入 类文件

    static $_file = [];// 静态文件 仓库

    $key          = $class . $baseUrl;// key 文件

    $class        = str_replace(['.', '#'], [DS, '.'], $class);//处理 class

    if (isset($_file[$key])) {

        return true;

    }// 如果 加载过了 这个 文件, 就直接

    if (empty($baseUrl)) {// 如果起始路径 为空,就是默认值

        list($name, $class) = explode(DS, $class, 2);// 返回 类的 前面两个数组

 

        if (isset(self::$prefixDirsPsr4[$name . '\\'])) {// 如果存在这个 Psr4

            // 注册的命名空间

            $baseUrl = self::$prefixDirsPsr4[$name . '\\'];

        } elseif ('@' == $name) {

            //加载当前模块应用类库

            $baseUrl = App::$modulePath;// 获取 @ 方式

        } elseif (is_dir(EXTEND_PATH . $name)) {

            $baseUrl = EXTEND_PATH;// 获取 基础 地址

        } else {

            // 加载其它模块的类库

            $baseUrl = APP_PATH . $name . DS;

        }

    } elseif (substr($baseUrl, -1) != DS) {

        $baseUrl .= DS;

    }// 获取 baseUrl

 

 

    // 如果类存在 则导入类库文件

    if (is_array($baseUrl)) {// 如果 基础地址 为 baseUrl

        foreach ($baseUrl as $path) {

            $filename = $path . DS . $class . $ext;// baseUrl

            if (is_file($filename)) {

                break;// 找到了 文件 就退出

            }

        }

    } else {

        $filename = $baseUrl . $class . $ext;

    }// 获取 了 filename

 

    if (!empty($filename) && is_file($filename)) {// 如果 没有 文件, 如果有这个文件

        // 开启调试模式Win环境严格区分大小写

        if (IS_WIN && pathinfo($filename, PATHINFO_FILENAME) != pathinfo(realpath($filename), PATHINFO_FILENAME)) {

            return false;

        }// 如果路径 不行

        __include_file($filename);// 加载文件

        $_file[$key] = true;// 执行 状态

        return true;

    }

    return false;

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消