在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
212019-05-23
相似问题