[李景山php]每天TP5-20161206|Loader.php-4

    // 注册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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值