1
0
Fork 0

fixes #3974: Autoloader have to distinguish between files and directories

pull/3975/head
Marc Bennewitz 2015-04-30 19:17:19 +02:00
parent 1cb427ff5c
commit 9455c49053
4 changed files with 27 additions and 4 deletions

View File

@ -351,7 +351,7 @@ class ClassLoader
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
if (0 === strpos($class, $prefix)) {
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;
}
}
@ -361,7 +361,7 @@ class ClassLoader
// PSR-4 fallback dirs
foreach ($this->fallbackDirsPsr4 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
return $file;
}
}
@ -380,7 +380,7 @@ class ClassLoader
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
@ -390,7 +390,7 @@ class ClassLoader
// PSR-0 fallback dirs
foreach ($this->fallbackDirsPsr0 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}

View File

@ -9,6 +9,17 @@ use Composer\Autoload\ClassLoader;
*/
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.
*

View File

@ -0,0 +1,6 @@
<?php
namespace DirDotPhp;
class Dir {}

View File

@ -0,0 +1,6 @@
<?php
namespace DirDotPhp\Dir.php;
class File {}