From 6728d65cd0b346943027a01b228bd7432cbe640d Mon Sep 17 00:00:00 2001 From: Fernando Menezes Date: Sat, 29 Feb 2020 11:49:28 -0300 Subject: [PATCH] Do not import classes with same name of class name --- src/Coders/Model/Factory.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Coders/Model/Factory.php b/src/Coders/Model/Factory.php index d3ffdece..b4047bc0 100644 --- a/src/Coders/Model/Factory.php +++ b/src/Coders/Model/Factory.php @@ -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); @@ -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};"; + } } }