Skip to content

Commit

Permalink
Merge pull request #158 from fmrodrigues92/master
Browse files Browse the repository at this point in the history
Do not import classes with same name of class name
  • Loading branch information
Cristian Llanos committed Mar 14, 2020
2 parents 5b29131 + 6728d65 commit 2fe0684
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/Coders/Model/Factory.php
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,8 @@ protected function fillTemplate($template, Model $model)
$usedClasses = array_unique($usedClasses);
$usedClassesSection = $this->formatUsedClasses(
$model->getBaseNamespace(),
$usedClasses
$usedClasses,
$model->getClassName()
);
$template = str_replace('{{imports}}', $usedClassesSection, $template);

Expand All @@ -283,14 +284,21 @@ protected function fillTemplate($template, Model $model)
*
* @return string
*/
private function formatUsedClasses($baseNamespace, $usedClasses)
private function formatUsedClasses($baseNamespace, $usedClasses, $className)
{
$result = [];
foreach ($usedClasses as $usedClass) {
// Do not import classes from same namespace
$namespacePattern = str_replace('\\', '\\\\', "/{$baseNamespace}\\[a-zA-Z0-9_]*/");
if (! preg_match($namespacePattern, $usedClass)) {
$result[] = "use {$usedClass};";

//Do not import classes with same name of className
preg_match('/\\\\[^\\\\]*$/', $usedClass, $matches, PREG_OFFSET_CAPTURE, 0);
$usedClassName = str_replace("\\", "", $matches[0][0]);

if($usedClassName != $className){
$result[] = "use {$usedClass};";
}
}
}

Expand Down

0 comments on commit 2fe0684

Please sign in to comment.