Merge pull request #3975 from marc-mabe/hotfix/3974
fixes #3974: Autoloader have to distinguish between files and directoriespull/3988/head
commit
bdb6ecb29e
|
@ -351,7 +351,7 @@ class ClassLoader
|
||||||
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
||||||
if (0 === strpos($class, $prefix)) {
|
if (0 === strpos($class, $prefix)) {
|
||||||
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
if (is_file($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -361,7 +361,7 @@ class ClassLoader
|
||||||
|
|
||||||
// PSR-4 fallback dirs
|
// PSR-4 fallback dirs
|
||||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ class ClassLoader
|
||||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||||
if (0 === strpos($class, $prefix)) {
|
if (0 === strpos($class, $prefix)) {
|
||||||
foreach ($dirs as $dir) {
|
foreach ($dirs as $dir) {
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -390,7 +390,7 @@ class ClassLoader
|
||||||
|
|
||||||
// PSR-0 fallback dirs
|
// PSR-0 fallback dirs
|
||||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,17 @@ use Composer\Autoload\ClassLoader;
|
||||||
*/
|
*/
|
||||||
class ClassLoaderTest extends \PHPUnit_Framework_TestCase
|
class ClassLoaderTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
public function testLoadClassDotPhp()
|
||||||
|
{
|
||||||
|
$loader = new ClassLoader();
|
||||||
|
$loader->add('DirDotPhp\\', __DIR__ . '/Fixtures');
|
||||||
|
$loader->addPsr4('DirDotPhp\\', __DIR__ . '/Fixtures/DirDotPhp/psr4');
|
||||||
|
|
||||||
|
$class = 'DirDotPhp\\Dir';
|
||||||
|
$loader->loadClass($class);
|
||||||
|
$this->assertTrue(class_exists($class, false), "->loadClass() loads '$class'.");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests regular PSR-0 and PSR-4 class loading.
|
* Tests regular PSR-0 and PSR-4 class loading.
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DirDotPhp;
|
||||||
|
|
||||||
|
class Dir {}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DirDotPhp\Dir.php;
|
||||||
|
|
||||||
|
class File {}
|
||||||
|
|
Loading…
Reference in New Issue