我正在使用Composer中的加载器。
/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require __DIR__ . '/vendor/dependencies/autoload.php';
$loader->add('MyAppNamespace', __DIR__, true);
正如您所看到的,加载器有3个参数,这些参数在此处记录:https://getcomposer.org/apidoc/1.0.0/Composer/Autoload/ClassLoader.html#method_add。
我对第3个布尔参数$prepend
的作用非常困惑。上面的链接表示$prepend
表示以下内容:Whether to prepend the directories
。但是我不知道这意味着什么。
有人可以解释$prepend
参数对示例的作用。
谢谢!
答案 0 :(得分:2)
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
);
}
如您所见,$prepend
确定您(__DIR__
)提供的路径是否会被添加或附加。通常它并不重要,因为每个命名空间只有一个路径,但是你可以拥有更多,例如使用此机制来覆盖您自己的实现随供应商lib提供的某些类。