1111
1212class FileVisitor extends NodeVisitorAbstract
1313{
14- /** @var ClassDescriptionBuilder */
15- private $ classDescriptionBuilder ;
14+ private ClassDescriptionBuilder $ classDescriptionBuilder ;
1615
17- /** @var array */
18- private $ classDescriptions = [];
16+ /** @var array<ClassDescription> */
17+ private array $ classDescriptions = [];
1918
2019 public function __construct (ClassDescriptionBuilder $ classDescriptionBuilder )
2120 {
@@ -50,13 +49,6 @@ public function enterNode(Node $node): void
5049 if ($ node ->isAbstract ()) {
5150 $ this ->classDescriptionBuilder ->setAbstract (true );
5251 }
53-
54- foreach ($ node ->attrGroups as $ attributeGroup ) {
55- foreach ($ attributeGroup ->attrs as $ attribute ) {
56- $ this ->classDescriptionBuilder
57- ->addAttribute ($ attribute ->name ->toString (), $ attribute ->getLine ());
58- }
59- }
6052 }
6153
6254 if ($ node instanceof Node \Stmt \Enum_ && null !== $ node ->namespacedName ) {
@@ -67,13 +59,6 @@ public function enterNode(Node $node): void
6759 $ this ->classDescriptionBuilder
6860 ->addInterface ($ interface ->toString (), $ interface ->getLine ());
6961 }
70-
71- foreach ($ node ->attrGroups as $ attributeGroup ) {
72- foreach ($ attributeGroup ->attrs as $ attribute ) {
73- $ this ->classDescriptionBuilder
74- ->addAttribute ($ attribute ->name ->toString (), $ attribute ->getLine ());
75- }
76- }
7762 }
7863
7964 /**
@@ -197,13 +182,6 @@ public function enterNode(Node $node): void
197182
198183 $ this ->classDescriptionBuilder ->setClassName ($ node ->namespacedName ->toCodeString ());
199184 $ this ->classDescriptionBuilder ->setInterface (true );
200-
201- foreach ($ node ->attrGroups as $ attributeGroup ) {
202- foreach ($ attributeGroup ->attrs as $ attribute ) {
203- $ this ->classDescriptionBuilder
204- ->addAttribute ($ attribute ->name ->toString (), $ attribute ->getLine ());
205- }
206- }
207185 }
208186
209187 if ($ node instanceof Node \Stmt \Trait_) {
@@ -213,13 +191,6 @@ public function enterNode(Node $node): void
213191
214192 $ this ->classDescriptionBuilder ->setClassName ($ node ->namespacedName ->toCodeString ());
215193 $ this ->classDescriptionBuilder ->setTrait (true );
216-
217- foreach ($ node ->attrGroups as $ attributeGroup ) {
218- foreach ($ attributeGroup ->attrs as $ attribute ) {
219- $ this ->classDescriptionBuilder
220- ->addAttribute ($ attribute ->name ->toString (), $ attribute ->getLine ());
221- }
222- }
223194 }
224195
225196 if ($ node instanceof Node \Stmt \ClassMethod) {
@@ -229,6 +200,15 @@ public function enterNode(Node $node): void
229200 ->addDependency (new ClassDependency ($ returnType ->toString (), $ returnType ->getLine ()));
230201 }
231202 }
203+
204+ if ($ node instanceof Node \Attribute) {
205+ $ nodeName = $ node ->name ;
206+
207+ if ($ nodeName instanceof Node \Name \FullyQualified) {
208+ $ this ->classDescriptionBuilder
209+ ->addAttribute ($ node ->name ->toString (), $ node ->getLine ());
210+ }
211+ }
232212 }
233213
234214 public function getClassDescriptions (): array
0 commit comments