@@ -16,37 +16,21 @@ class Index implements ReadableIndex, \Serializable
16
16
17
17
/**
18
18
* An associative array that maps splitted fully qualified symbol names
19
- * to non-member definitions, eg :
19
+ * to definitions, eg :
20
20
* [
21
21
* 'Psr' => [
22
22
* '\Log' => [
23
23
* '\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
25
26
* ],
26
27
* ],
27
28
* ],
28
29
* ]
29
30
*
30
31
* @var array
31
32
*/
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 = [];
50
34
51
35
/**
52
36
* An associative array that maps fully qualified symbol names
@@ -115,29 +99,20 @@ public function isStaticComplete(): bool
115
99
* Returns a Generator providing an associative array [string => Definition]
116
100
* that maps fully qualified symbol names to Definitions (global or not)
117
101
*
118
- * @param boolean|null $member Indicates if we want member or non-member definitions (null for both, default null)
119
102
* @return \Generator yields Definition
120
103
*/
121
- public function getDefinitions (bool $ member = null ): \Generator
104
+ public function getDefinitions (): \Generator
122
105
{
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 );
131
107
}
132
108
133
109
/**
134
110
* Returns a Generator that yields all the descendant Definitions of a given FQN
135
111
*
136
112
* @param string $fqn
137
- * @param boolean|null $member Indicates if we want member or non-member definitions (null for both, default null)
138
113
* @return \Generator yields Definition
139
114
*/
140
- public function getDescendantDefinitionsForFqn (string $ fqn, bool $ member = null ): \Generator
115
+ public function getDescendantDefinitionsForFqn (string $ fqn ): \Generator
141
116
{
142
117
$ parts = $ this ->splitFqn ($ fqn );
143
118
if ('' === end ($ parts )) {
@@ -146,13 +121,12 @@ public function getDescendantDefinitionsForFqn(string $fqn, bool $member = null)
146
121
array_pop ($ parts );
147
122
}
148
123
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 );
156
130
}
157
131
}
158
132
@@ -166,13 +140,8 @@ public function getDescendantDefinitionsForFqn(string $fqn, bool $member = null)
166
140
public function getDefinition (string $ fqn , bool $ globalFallback = false )
167
141
{
168
142
$ parts = $ this ->splitFqn ($ fqn );
143
+ $ result = $ this ->getIndexValue ($ parts , $ this ->definitions );
169
144
170
- $ result = $ this ->getIndexValue ($ parts , $ this ->memberDefinitions );
171
- if ($ result instanceof Definition) {
172
- return $ result ;
173
- }
174
-
175
- $ result = $ this ->getIndexValue ($ parts , $ this ->nonMemberDefinitions );
176
145
if ($ result instanceof Definition) {
177
146
return $ result ;
178
147
}
@@ -195,12 +164,7 @@ public function getDefinition(string $fqn, bool $globalFallback = false)
195
164
public function setDefinition (string $ fqn , Definition $ definition )
196
165
{
197
166
$ 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 );
204
168
205
169
$ this ->emit ('definition-added ' );
206
170
}
@@ -215,8 +179,7 @@ public function setDefinition(string $fqn, Definition $definition)
215
179
public function removeDefinition (string $ fqn )
216
180
{
217
181
$ 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 );
220
183
221
184
unset($ this ->references [$ fqn ]);
222
185
}
@@ -316,26 +279,6 @@ public function serialize()
316
279
]);
317
280
}
318
281
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
-
339
282
/**
340
283
* Returns a Generator that yields all the Definitions in the given $storage recursively.
341
284
* The generator yields key => value pairs, e.g.
@@ -488,7 +431,7 @@ private function removeIndexedDefinition(int $level, array $parts, array &$stora
488
431
$ this ->removeIndexedDefinition (0 , array_slice ($ parts , 0 , $ level ), $ rootStorage , $ rootStorage );
489
432
}
490
433
}
491
- } elseif ( isset ( $ storage [ $ part ])) {
434
+ } else {
492
435
$ this ->removeIndexedDefinition ($ level + 1 , $ parts , $ storage [$ part ], $ rootStorage );
493
436
}
494
437
}
0 commit comments