protected pStmt_Use ( PhpParser\Node\Stmt\Use_ $node ) | ||
$node | PhpParser\Node\Stmt\Use_ |
/** * Traverses the main PHP file, checks for namespaces, classes, if statements and use statements. * A chain of responsibility could be used here to get rid of the awful if/else statements. * * @param $statements * @param string $namespaceString * @returns array $code */ protected function traverseStatements($statements, $namespaceString = '') { $uses = ''; $code = []; foreach ($statements as $statement) { if ($statement instanceof Namespace_) { $namespaceString = implode('\\', $statement->name->parts); $nestedCode = $this->traverseStatements($statement->stmts, $namespaceString); $code = array_merge($code, $nestedCode); } elseif ($statement instanceof Class_) { if (empty($namespaceString)) { $namespaceString = 'tmp'; } $fileLocation = DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $namespaceString); $code[$statement->name] = $this->getClass($statement, $namespaceString, $fileLocation, $uses); } elseif ($statement instanceof If_) { $nestedCode = $this->traverseStatements($statement->stmts, $namespaceString); $code = array_merge($code, $nestedCode); } elseif ($statement instanceof Use_) { $uses .= $this->prettyPrinter->pStmt_Use($statement) . PHP_EOL; } } return $code; }