rector/rules/CodingStyle/Naming/ClassNaming.php

47 lines
1.4 KiB
PHP
Raw Normal View History

2019-10-13 05:59:52 +00:00
<?php
declare (strict_types=1);
2022-06-06 16:43:29 +00:00
namespace RectorPrefix20220606\Rector\CodingStyle\Naming;
2019-05-01 11:15:18 +00:00
use RectorPrefix20220606\Nette\Utils\Strings;
2022-06-06 16:43:29 +00:00
use RectorPrefix20220606\PhpParser\Node\Identifier;
use RectorPrefix20220606\PhpParser\Node\Name;
use RectorPrefix20220606\PhpParser\Node\Stmt\ClassLike;
2019-05-01 11:15:18 +00:00
final class ClassNaming
{
/**
* @param string|\PhpParser\Node\Name|\PhpParser\Node\Identifier $name
*/
public function getVariableName($name) : string
{
$shortName = $this->getShortName($name);
return \lcfirst($shortName);
}
/**
* @param string|\PhpParser\Node\Name|\PhpParser\Node\Identifier|\PhpParser\Node\Stmt\ClassLike $name
*/
public function getShortName($name) : string
{
2022-06-06 16:43:29 +00:00
if ($name instanceof ClassLike) {
if ($name->name === null) {
return '';
}
return $this->getShortName($name->name);
}
2022-06-06 16:43:29 +00:00
if ($name instanceof Name || $name instanceof Identifier) {
$name = $name->toString();
}
$name = \trim($name, '\\');
2022-06-06 16:43:29 +00:00
$shortName = Strings::after($name, '\\', -1);
if (\is_string($shortName)) {
return $shortName;
}
return $name;
2019-05-01 11:15:18 +00:00
}
public function getNamespace(string $fullyQualifiedName) : ?string
{
$fullyQualifiedName = \trim($fullyQualifiedName, '\\');
2022-06-06 16:43:29 +00:00
return Strings::before($fullyQualifiedName, '\\', -1);
}
2019-05-01 11:15:18 +00:00
}