/** * Search for unnecessary namespace imports and definitions and replace occurrences. * * @param FileGenerator $fileGenerator * @return string Generated code */ public function replaceNamespace(FileGenerator $fileGenerator) { $uses = []; $search = []; $replace = []; foreach ($fileGenerator->getUses() as $import) { $namespace = trim(substr($import[0], 0, strrpos($import[0], '\\')), '\\'); if ($fileGenerator->getNamespace() !== $namespace) { $uses[] = $import; } $name = trim(substr($import[0], strrpos($import[0], '\\')), '\\'); $search[] = '\\' . $import[0]; $search[] = ', \\' . $import[0]; $replace[] = $name; $replace[] = ', ' . $name; } // workaround to reset use imports $reflection = new \ReflectionClass($fileGenerator); $property = $reflection->getProperty('uses'); $property->setAccessible(true); $property->setValue($fileGenerator, $uses); $code = $fileGenerator->generate(); return str_replace($search, $replace, $code); }