Psr0NameInflector   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 2
dl 0
loc 23
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A inflectToRelativePath() 0 11 3
A inflectToClassName() 0 8 1
1
<?php
2
3
namespace Phpactor\ClassFileConverter\Adapter\Composer;
4
5
use Phpactor\ClassFileConverter\Domain\ClassName;
6
use Phpactor\ClassFileConverter\Domain\FilePath;
7
8
final class Psr0NameInflector implements NameInflector
9
{
10
    public function inflectToRelativePath(string $prefix, ClassName $className, string $mappedPath): FilePath
11
    {
12
        if (substr($prefix, -1) === '_' && $className->beginsWith($prefix)) {
13
            $elements = explode('_', $className);
14
            $className = implode('\\', $elements);
15
        }
16
17
        $relativePath = str_replace('\\', '/', (string) $className).'.php';
18
19
        return FilePath::fromParts([$mappedPath, $relativePath]);
20
    }
21
22
    public function inflectToClassName(FilePath $filePath, string $pathPrefix, string $classPrefix): ClassName
23
    {
24
        $className = substr($filePath, strlen($pathPrefix) + 1);
25
        $className = str_replace('/', '\\', $className);
26
        $className = preg_replace('{\.(.+)$}', '', $className);
27
28
        return ClassName::fromString($className);
29
    }
30
}
31