8000 Make Psr4DirectoryLoader skip abstract classes · symfony/symfony@61619ce · GitHub
[go: up one dir, main page]

Skip to content

Commit 61619ce

Browse files
committed
Make Psr4DirectoryLoader skip abstract classes
1 parent b02a689 commit 61619ce

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,14 @@ public function setRouteAnnotationClass(string $class)
106106
*/
107107
public function load(mixed $class, string $type = null): RouteCollection
108108
{
109-
if (!class_exists($class)) {
110-
throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
109+
if (!$class instanceof \ReflectionClass) {
110+
if (!class_exists($class)) {
111+
throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
112+
}
113+
114+
$class = new \ReflectionClass($class);
111115
}
112116

113-
$class = new \ReflectionClass($class);
114117
if ($class->isAbstract()) {
115118
throw new \InvalidArgumentException(sprintf('Annotations from class "%s" cannot be read as it is abstract.', $class->getName()));
116119
}
@@ -227,7 +230,7 @@ protected function addRoute(RouteCollection $collection, object $annot, array $g
227230

228231
public function supports(mixed $resource, string $type = null): bool
229232
{
230-
return \is_string($resource) && preg_match('/^(?:\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+$/', $resource) && (!$type || \in_array($type, ['annotation', 'attribute'], true));
233+
return ($resource instanceof \ReflectionClass || \is_string($resource) && preg_match('/^(?:\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+$/', $resource)) && (!$type || \in_array($type, ['annotation', 'attribute'], true));
231234
}
232235

233236
public function setResolver(LoaderResolverInterface $resolver)

src/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ function (\SplFileInfo $current) {
5151
continue;
5252
}
5353

54-
if ($class = $this->findClass($file)) {
55-
$refl = new \ReflectionClass($class);
56-
if ($refl->isAbstract()) {
54+
if ($className = $this->findClass($file)) {
55+
$class = new \ReflectionClass($className);
56+
if ($class->isAbstract()) {
5757
continue;
5858
}
5959

src/Symfony/Component/Routing/Loader/Psr4DirectoryLoader.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,12 @@ function (\SplFileInfo $current) {
8787
continue;
8888
}
8989

90-
$collection->addCollection($this->import($className, 'attribute'));
90+
$class = new \ReflectionClass($className);
91+
if ($class->isAbstract()) {
92+
continue;
93+
}
94+
95+
$collection->addCollection($this->import($class, 'attribute'));
9196
}
9297

9398
return $collection;

0 commit comments

Comments
 (0)
0