@@ -16,37 +16,21 @@ class Index implements ReadableIndex, \Serializable
1616
1717 /**
1818 * An associative array that maps splitted fully qualified symbol names
19- * to non-member definitions, eg :
19+ * to definitions, eg :
2020 * [
2121 * 'Psr' => [
2222 * '\Log' => [
2323 * '\LoggerInterface' => [
24- * '' => $definition,
24+ * '' => $def1, // definition for 'Psr\Log\LoggerInterface' which is non-member
25+ * '->log()' => $def2, // definition for 'Psr\Log\LoggerInterface->log()' which is a member definition
2526 * ],
2627 * ],
2728 * ],
2829 * ]
2930 *
3031 * @var array
3132 */
32- private $ nonMemberDefinitions = [];
33-
34- /**
35- * An associative array that maps splitted fully qualified symbol names
36- * to member definitions, eg :
37- * [
38- * 'Psr' => [
39- * '\Log' => [
40- * '\LoggerInterface' => [
41- * '->log()' => $definition,
42- * ],
43- * ],
44- * ],
45- * ]
46- *
47- * @var array
48- */
49- private $ memberDefinitions = [];
33+ private $ definitions = [];
5034
5135 /**
5236 * An associative array that maps fully qualified symbol names
@@ -115,29 +99,20 @@ public function isStaticComplete(): bool
11599 * Returns a Generator providing an associative array [string => Definition]
116100 * that maps fully qualified symbol names to Definitions (global or not)
117101 *
118- * @param boolean|null $member Indicates if we want member or non-member definitions (null for both, default null)
119102 * @return \Generator yields Definition
120103 */
121- public function getDefinitions (bool $ member = null ): \Generator
104+ public function getDefinitions (): \Generator
122105 {
123- if (true === $ member ) {
124- yield from $ this ->yieldDefinitionsRecursively ($ this ->memberDefinitions );
125- } elseif (false === $ member ) {
126- yield from $ this ->yieldDefinitionsRecursively ($ this ->nonMemberDefinitions );
127- } else {
128- yield from $ this ->yieldDefinitionsRecursively ($ this ->memberDefinitions );
129- yield from $ this ->yieldDefinitionsRecursively ($ this ->nonMemberDefinitions );
130- }
106+ yield from $ this ->yieldDefinitionsRecursively ($ this ->definitions );
131107 }
132108
133109 /**
134110 * Returns a Generator that yields all the descendant Definitions of a given FQN
135111 *
136112 * @param string $fqn
137- * @param boolean|null $member Indicates if we want member or non-member definitions (null for both, default null)
138113 * @return \Generator yields Definition
139114 */
140- public function getDescendantDefinitionsForFqn (string $ fqn, bool $ member = null ): \Generator
115+ public function getDescendantDefinitionsForFqn (string $ fqn ): \Generator
141116 {
142117 $ parts = $ this ->splitFqn ($ fqn );
143118 if ('' === end ($ parts )) {
@@ -146,13 +121,12 @@ public function getDescendantDefinitionsForFqn(string $fqn, bool $member = null)
146121 array_pop ($ parts );
147122 }
148123
149- if (true === $ member ) {
150- yield from $ this ->doGetDescendantDefinitionsForFqn ($ fqn , $ parts , $ this ->memberDefinitions );
151- } elseif (false === $ member ) {
152- yield from $ this ->doGetDescendantDefinitionsForFqn ($ fqn , $ parts , $ this ->nonMemberDefinitions );
153- } else {
154- yield from $ this ->doGetDescendantDefinitionsForFqn ($ fqn , $ parts , $ this ->memberDefinitions );
155- yield from $ this ->doGetDescendantDefinitionsForFqn ($ fqn , $ parts , $ this ->nonMemberDefinitions );
124+ $ result = $ this ->getIndexValue ($ parts , $ this ->definitions );
125+
126+ if ($ result instanceof Definition) {
127+ yield $ fqn => $ result ;
128+ } elseif (is_array ($ result )) {
129+ yield from $ this ->yieldDefinitionsRecursively ($ result , $ fqn );
156130 }
157131 }
158132
@@ -166,13 +140,8 @@ public function getDescendantDefinitionsForFqn(string $fqn, bool $member = null)
166140 public function getDefinition (string $ fqn , bool $ globalFallback = false )
167141 {
168142 $ parts = $ this ->splitFqn ($ fqn );
143+ $ result = $ this ->getIndexValue ($ parts , $ this ->definitions );
169144
170- $ result = $ this ->getIndexValue ($ parts , $ this ->memberDefinitions );
171- if ($ result instanceof Definition) {
172- return $ result ;
173- }
174-
175- $ result = $ this ->getIndexValue ($ parts , $ this ->nonMemberDefinitions );
176145 if ($ result instanceof Definition) {
177146 return $ result ;
178147 }
@@ -195,12 +164,7 @@ public function getDefinition(string $fqn, bool $globalFallback = false)
195164 public function setDefinition (string $ fqn , Definition $ definition )
196165 {
197166 $ parts = $ this ->splitFqn ($ fqn );
198-
199- if ($ definition ->isMember ) {
200- $ this ->indexDefinition (0 , $ parts , $ this ->memberDefinitions , $ definition );
201- } else {
202- $ this ->indexDefinition (0 , $ parts , $ this ->nonMemberDefinitions , $ definition );
203- }
167+ $ this ->indexDefinition (0 , $ parts , $ this ->definitions , $ definition );
204168
205169 $ this ->emit ('definition-added ' );
206170 }
@@ -215,8 +179,7 @@ public function setDefinition(string $fqn, Definition $definition)
215179 public function removeDefinition (string $ fqn )
216180 {
217181 $ parts = $ this ->splitFqn ($ fqn );
218- $ this ->removeIndexedDefinition (0 , $ parts , $ this ->memberDefinitions , $ this ->memberDefinitions );
219- $ this ->removeIndexedDefinition (0 , $ parts , $ this ->nonMemberDefinitions , $ this ->nonMemberDefinitions );
182+ $ this ->removeIndexedDefinition (0 , $ parts , $ this ->definitions , $ this ->definitions );
220183
221184 unset($ this ->references [$ fqn ]);
222185 }
@@ -316,26 +279,6 @@ public function serialize()
316279 ]);
317280 }
318281
319- /**
320- * Returns a Generator that yields all the descendant Definitions of a given FQN
321- * in the given definition index.
322- *
323- * @param string $fqn
324- * @param string[] $parts The splitted FQN
325- * @param array &$storage The definitions index to look into
326- * @return \Generator yields Definition
327- */
328- private function doGetDescendantDefinitionsForFqn (string $ fqn , array $ parts , array &$ storage ): \Generator
329- {
330- $ result = $ this ->getIndexValue ($ parts , $ storage );
331-
332- if ($ result instanceof Definition) {
333- yield $ fqn => $ result ;
334- } elseif (is_array ($ result )) {
335- yield from $ this ->yieldDefinitionsRecursively ($ result , $ fqn );
336- }
337- }
338-
339282 /**
340283 * Returns a Generator that yields all the Definitions in the given $storage recursively.
341284 * The generator yields key => value pairs, e.g.
@@ -488,7 +431,7 @@ private function removeIndexedDefinition(int $level, array $parts, array &$stora
488431 $ this ->removeIndexedDefinition (0 , array_slice ($ parts , 0 , $ level ), $ rootStorage , $ rootStorage );
489432 }
490433 }
491- } elseif ( isset ( $ storage [ $ part ])) {
434+ } else {
492435 $ this ->removeIndexedDefinition ($ level + 1 , $ parts , $ storage [$ part ], $ rootStorage );
493436 }
494437 }
0 commit comments