Skip to content

Commit

Permalink
Merge pull request #8745 from kenjis/fix-findQualifiedNameFromPath-Ca…
Browse files Browse the repository at this point in the history
…nnot-declare-class

fix: [FileLocator] Cannot declare class XXX, because the name is already in use
  • Loading branch information
kenjis committed Apr 13, 2024
2 parents 04394c6 + 5e6979b commit 666c8fc
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion system/Autoloader/FileLocator.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ class FileLocator implements FileLocatorInterface
*/
protected $autoloader;

/**
* List of classnames that did not exist.
*
* @var list<class-string>
*/
private array $invalidClassnames = [];

public function __construct(Autoloader $autoloader)
{
$this->autoloader = $autoloader;
Expand Down Expand Up @@ -288,14 +295,20 @@ public function findQualifiedNameFromPath(string $path)
),
'\\'
);

// Remove the file extension (.php)
$className = mb_substr($className, 0, -4);

if (in_array($className, $this->invalidClassnames, true)) {
continue;
}

// Check if this exists
if (class_exists($className)) {
return $className;
}

// If the class does not exist, it is an invalid classname.
$this->invalidClassnames[] = $className;
}
}

Expand Down

0 comments on commit 666c8fc

Please sign in to comment.