rector/packages/CodingStyle/src/Naming/ClassNaming.php

47 lines
1.1 KiB
PHP
Raw Normal View History

2019-05-01 11:15:18 +00:00
<?php declare(strict_types=1);
namespace Rector\CodingStyle\Naming;
use Nette\Utils\Strings;
use PhpParser\Node\Name;
use Rector\Exception\ShouldNotHappenException;
use Rector\PhpParser\Node\Resolver\NameResolver;
2019-05-01 11:15:18 +00:00
final class ClassNaming
{
/**
* @var NameResolver
*/
private $nameResolver;
public function __construct(NameResolver $nameResolver)
2019-05-01 11:15:18 +00:00
{
$this->nameResolver = $nameResolver;
}
/**
* @param string|Name $name
* @return string
*/
public function getShortName($name): string
{
if ($name instanceof Name) {
2019-08-04 18:41:51 +00:00
$name = $this->nameResolver->getName($name);
if ($name === null) {
2019-09-21 11:03:30 +00:00
throw new ShouldNotHappenException();
}
}
$name = trim($name, '\\');
return Strings::after($name, '\\', -1) ?: $name;
2019-05-01 11:15:18 +00:00
}
public function getNamespace(string $fullyQualifiedName): ?string
{
$fullyQualifiedName = trim($fullyQualifiedName, '\\');
return Strings::before($fullyQualifiedName, '\\', -1) ?: null;
}
2019-05-01 11:15:18 +00:00
}