Fix BC of generated static map
parent
c962be2f41
commit
ce70e0e9dd
|
@ -785,10 +785,7 @@ HEADER;
|
||||||
|
|
||||||
// BC handling when converting to a new ClassLoader
|
// BC handling when converting to a new ClassLoader
|
||||||
if (isset($maps['prefixLengthsPsr4'])) {
|
if (isset($maps['prefixLengthsPsr4'])) {
|
||||||
$maps['firstCharsPsr4'] = array_map(function () {
|
$maps['firstCharsPsr4'] = array_map('is_array', $maps['prefixLengthsPsr4']);
|
||||||
return true;
|
|
||||||
}, $maps['prefixLengthsPsr4']);
|
|
||||||
unset($maps['prefixLengthsPsr4']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($maps as $prop => $value) {
|
foreach ($maps as $prop => $value) {
|
||||||
|
|
|
@ -44,6 +44,7 @@ class ClassLoader
|
||||||
{
|
{
|
||||||
// PSR-4
|
// PSR-4
|
||||||
private $firstCharsPsr4 = array();
|
private $firstCharsPsr4 = array();
|
||||||
|
private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
|
||||||
private $prefixDirsPsr4 = array();
|
private $prefixDirsPsr4 = array();
|
||||||
private $fallbackDirsPsr4 = array();
|
private $fallbackDirsPsr4 = array();
|
||||||
|
|
||||||
|
@ -371,15 +372,15 @@ class ClassLoader
|
||||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||||
|
|
||||||
$first = $class[0];
|
$first = $class[0];
|
||||||
if (isset($this->firstCharsPsr4[$first])) {
|
if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
|
||||||
$subPath = $class;
|
$subPath = $class;
|
||||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||||
$subPath = substr($subPath, 0, $lastPos);
|
$subPath = substr($subPath, 0, $lastPos);
|
||||||
$search = $subPath.'\\';
|
$search = $subPath.'\\';
|
||||||
if (isset($this->prefixDirsPsr4[$search])) {
|
if (isset($this->prefixDirsPsr4[$search])) {
|
||||||
$pathEnd = substr($logicalPathPsr4, $lastPos + 1);
|
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $pathEnd)) {
|
if (file_exists($file = $dir . $pathEnd)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue