diff --git a/src/ObjectResolver.php b/src/ObjectResolver.php index 1e7cfe6..e7b5f6a 100644 --- a/src/ObjectResolver.php +++ b/src/ObjectResolver.php @@ -34,7 +34,7 @@ class ObjectResolver { public function getAnnotationFromClassname(string $className) : ? object { if ( $name = $this->uses[$className] ?? false) { - foreach($this->class['tags'] as $item) { + foreach(array_reverse($this->class['tags']) as $item) { if ( $item['tag'] === $name ) { return $this->instanciateAnnotationObject($item); } @@ -100,13 +100,14 @@ class ObjectResolver { return $list; } - + public function instanciateAnnotationObject(array $tagDefinition) : Annotation { $arguments = $this->extractArguments($tagDefinition['arguments']); if ( false === $class = array_search($tagDefinition['tag'], $this->uses) ) { - throw new \InvalidArgumentException("Annotation class `{$tagDefinition['tag']}` was not found within {$this->objectClass} uses statement (or it's children / traits)"); + return new class() implements Annotation {}; + # throw new \InvalidArgumentException("Annotation class `{$tagDefinition['tag']}` was not found within {$this->objectClass} uses statement (or it's children / traits)"); } $obj = new $class(... $arguments['constructor']);