Psr4NameInflector::inflectToClassName()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.7998
c 0
b 0
f 0
cc 2
nc 2
nop 3
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 Psr4NameInflector implements NameInflector
9
{
10
    public function inflectToRelativePath(string $prefix, ClassName $className, string $mappedPath): FilePath
11
    {
12
        $relativePath = str_replace('\\', '/', substr($className, strlen($prefix))).'.php';
13
14
        return FilePath::fromParts([$mappedPath, $relativePath]);
15
    }
16
17
    public function inflectToClassName(FilePath $filePath, string $pathPrefix, string $classPrefix): ClassName
18
    {
19
        // class prefix is "0" when prefix is "" (fallback) in composer.json
20
        if ('0' == (string) $classPrefix) {
21
            $classPrefix = '';
22
        }
23
24
        $className = substr($filePath, strlen($pathPrefix) + 1);
25
        $className = str_replace('/', '\\', $className);
26
        $className = $classPrefix.$className;
27
        $className = preg_replace('{\.(.+)$}', '', $className);
28
29
        return ClassName::fromString($className);
30
    }
31
}
32