33namespace Parser \Processor ;
44
55use Entity \FQCN ;
6+ use Entity \Node \Uses ;
67use PhpParser \Node ;
78use PhpParser \NodeVisitorAbstract ;
89use PhpParser \Node \Stmt \Class_ ;
910use PhpParser \Node \Stmt \Interface_ ;
1011use PhpParser \Node \Stmt \Use_ ;
12+ use PhpParser \Node \Stmt \Namespace_ ;
1113use Parser \ClassParser ;
1214use Parser \InterfaceParser ;
1315use Parser \UseParser ;
16+ use Parser \NamespaceParser ;
1417
1518class IndexProcessor extends NodeVisitorAbstract implements ProcessorInterface {
1619 public function __construct (
1720 ClassParser $ classParser ,
1821 InterfaceParser $ interfaceParser ,
19- UseParser $ useParser
22+ UseParser $ useParser ,
23+ NamespaceParser $ namespaceParser
2024 ){
2125 $ this ->classParser = $ classParser ;
2226 $ this ->interfaceParser = $ interfaceParser ;
2327 $ this ->useParser = $ useParser ;
28+ $ this ->namespaceParser = $ namespaceParser ;
2429 }
25- public function setFileInfo (FQCN $ fqcn , $ file ){
26- $ this ->fqcn = $ fqcn ;
30+ public function setFileInfo (Uses $ uses , $ file ){
31+ $ this ->uses = $ uses ;
2732 $ this ->file = $ file ;
2833 }
2934 public function parseInterface (Interface_ $ node , $ fqcn , $ file ){
@@ -36,23 +41,26 @@ public function parseClass(Class_ $node, $fqcn, $file){
3641 $ this ->classParser ->parse ($ node , $ fqcn , $ file )
3742 );
3843 }
39- public function parseUse (Use_ $ node, $ fqcn , $ file ){
40- $ this ->useParser ->parse ($ node, $ fqcn , $ file );
44+ public function parseUse (Use_ $ node ){
45+ $ this ->useParser ->parse ($ node );
4146 }
4247 public function parseFQCN ($ fqcn ){
4348 return $ this ->useParser ->parseFQCN ($ fqcn );
4449 }
4550 public function enterNode (Node $ node ){
4651 if ($ node instanceof Use_){
47- $ this ->parseUse ($ node , $ this ->fqcn , $ this ->file );
52+ $ this ->parseUse ($ node );
53+ }
54+ elseif ($ node instanceof Namespace_){
55+ $ this ->namespaceParser ->parse ($ node );
4856 }
4957 }
5058 public function leaveNode (Node $ node ){
5159 if ($ node instanceof Class_){
52- $ this ->parseClass ($ node , $ this ->fqcn , $ this ->file );
60+ $ this ->parseClass ($ node , $ this ->uses -> getFQCN () , $ this ->file );
5361 }
5462 elseif ($ node instanceof Interface_){
55- $ this ->parseInterface ($ node , $ this ->fqcn , $ this ->file );
63+ $ this ->parseInterface ($ node , $ this ->uses -> getFQCN () , $ this ->file );
5664 }
5765 }
5866 public function clearResultNodes (){
@@ -65,11 +73,11 @@ protected function addResultNode($resultNode){
6573 if (!$ resultNode ){
6674 return ;
6775 }
68- $ resultNode ->uses = $ this ->useParser ->getUses ();
6976 $ this ->resultNodes [] = $ resultNode ;
7077 }
7178
72- private $ fqcn ;
79+ /** @var Uses */
80+ private $ uses ;
7381 private $ file ;
7482 private $ parser ;
7583 /** @var ClassParser */
@@ -80,4 +88,6 @@ protected function addResultNode($resultNode){
8088 private $ useParser ;
8189 /** @var ClassData[]|InterfaceData[] */
8290 private $ resultNodes ;
91+ /** @var NamespaceParser */
92+ private $ namespaceParser ;
8393}
0 commit comments