diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d4757ce..f3207344 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Read autoload-dev psr-4 namespaces for gacela make commands. - Cache default resolved gacela class. +- Allow optional project namespace on class name finder rules. ### 0.26.0 #### 2022-10-01 diff --git a/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithModulePrefix.php b/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithModulePrefix.php index f57da024..1ea336be 100644 --- a/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithModulePrefix.php +++ b/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithModulePrefix.php @@ -10,9 +10,17 @@ final class FinderRuleWithModulePrefix implements FinderRuleInterface { public function buildClassCandidate(string $projectNamespace, string $resolvableType, ClassInfo $classInfo): string { + if ($projectNamespace !== '') { + return sprintf( + '\\%s\\%s\\%s', + trim($projectNamespace, '\\'), + $classInfo->getModuleName(), + $classInfo->getModuleName() . $resolvableType + ); + } + return sprintf( - '\\%s\\%s\\%s', - trim($projectNamespace, '\\'), + '\\%s\\%s', $classInfo->getModuleName(), $classInfo->getModuleName() . $resolvableType ); diff --git a/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithoutModulePrefix.php b/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithoutModulePrefix.php index b332a163..227f882f 100644 --- a/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithoutModulePrefix.php +++ b/src/Framework/ClassResolver/ClassNameFinder/Rule/FinderRuleWithoutModulePrefix.php @@ -10,9 +10,17 @@ final class FinderRuleWithoutModulePrefix implements FinderRuleInterface { public function buildClassCandidate(string $projectNamespace, string $resolvableType, ClassInfo $classInfo): string { + if ($projectNamespace !== '') { + return sprintf( + '\\%s\\%s\\%s', + trim($projectNamespace, '\\'), + $classInfo->getModuleName(), + $resolvableType + ); + } + return sprintf( - '\\%s\\%s\\%s', - trim($projectNamespace, '\\'), + '\\%s\\%s', $classInfo->getModuleName(), $resolvableType );