在register方法中composer自动加载的问题

来源:2-5 【类的自动加载】自动加载Loader深度分析

_浮生若梦_

2019-05-23

老师你好,在学习本章的过程中遇到了一个问题

// Composer自动加载支持
        if (is_dir(self::$composerPath)) {
            if (is_file(self::$composerPath . 'autoload_static.php')) {
                require self::$composerPath . 'autoload_static.php';
				// 获取当前加载的所有类
                $declaredClass = get_declared_classes();
                $composerClass = array_pop($declaredClass);

                foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap', 'files'] as $attr) {
                    if (property_exists($composerClass, $attr)) {
                        self::${$attr} = $composerClass::${$attr};
                    }
                }
            } else {
                self::registerComposerLoader(self::$composerPath);
            }

在这段代码中

foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap', 'files'] as $attr) 

这段不是很理解
因为在 autoload_static.php 中只有两个属性prefixLengthsPsr4, prefixDirsPsr4 两个变量。 那么我后面的设置有什么用呢? 我吧后面变量全部删除之后。发现其实也是可以正常运行的

写回答

1回答

_浮生若梦_

提问者

2019-05-23

好吧,我看了composer解析之后理解了,同学们可以看这一篇文章      https://segmentfault.com/a/1190000014948542

2
1
singwa
您好。问题解决了吗
2019-05-23
共1条回复

BAT资深工程师解析Tp5+Tp6底层源码

一门课掌握主流Tp5+最新Tp6框架底层,拥抱新潮流

694 学习 · 154 问题

查看课程