Fix constant namespace extraction
This commit is contained in:
parent
456b11149c
commit
639c159cfb
|
@ -3,9 +3,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace StubTests\Model;
|
||||
|
||||
use PhpParser\Node\Stmt\Namespace_;
|
||||
use PhpParser\NodeAbstract;
|
||||
|
||||
abstract class BasePHPElement
|
||||
{
|
||||
public $name;
|
||||
|
@ -28,16 +25,6 @@ abstract class BasePHPElement
|
|||
|
||||
abstract public function readMutedProblems($jsonData);
|
||||
|
||||
protected function getConstantFQN(NodeAbstract $node, string $nodeName): string
|
||||
{
|
||||
$namespace = '';
|
||||
if ($node->getAttribute('parent') instanceof Namespace_ && !empty($node->getAttribute('parent')->name)) {
|
||||
$namespace = '\\' . implode('\\', $node->getAttribute('parent')->name->parts) . '\\';
|
||||
}
|
||||
|
||||
return $namespace . $nodeName;
|
||||
}
|
||||
|
||||
protected function getFQN($node): string
|
||||
{
|
||||
$fqn = '';
|
||||
|
|
|
@ -5,6 +5,8 @@ namespace StubTests\Model;
|
|||
|
||||
use PhpParser\Node\Const_;
|
||||
use PhpParser\Node\Stmt\ClassConst;
|
||||
use PhpParser\Node\Stmt\Namespace_;
|
||||
use PhpParser\NodeAbstract;
|
||||
use ReflectionClassConstant;
|
||||
use stdClass;
|
||||
|
||||
|
@ -55,6 +57,17 @@ class PHPConst extends BasePHPElement
|
|||
return null;
|
||||
}
|
||||
|
||||
protected function getConstantFQN(NodeAbstract $node, string $nodeName): string
|
||||
{
|
||||
$namespace = '';
|
||||
$parentParentNode = $node->getAttribute('parent')->getAttribute('parent');
|
||||
if ($parentParentNode instanceof Namespace_ && !empty($parentParentNode->name)) {
|
||||
$namespace = '\\' . implode('\\', $parentParentNode->name->parts) . '\\';
|
||||
}
|
||||
|
||||
return $namespace . $nodeName;
|
||||
}
|
||||
|
||||
public function readMutedProblems($jsonData): void
|
||||
{
|
||||
/**@var stdClass $constant */
|
||||
|
|
|
@ -37,6 +37,9 @@ class StubsContainer
|
|||
*/
|
||||
public function addConstant(PHPConst $constant): void
|
||||
{
|
||||
if (array_key_exists($constant->name, $this->constants)) {
|
||||
throw new \Exception($constant->name . " is already defined in stubs");
|
||||
}
|
||||
$this->constants[$constant->name] = $constant;
|
||||
}
|
||||
|
||||
|
@ -82,6 +85,9 @@ class StubsContainer
|
|||
*/
|
||||
public function addClass(PHPClass $class): void
|
||||
{
|
||||
if (array_key_exists($class->name, $this->classes)) {
|
||||
throw new \Exception($class->name . " is already defined in stubs");
|
||||
}
|
||||
$this->classes[$class->name] = $class;
|
||||
}
|
||||
|
||||
|
@ -111,6 +117,9 @@ class StubsContainer
|
|||
*/
|
||||
public function addInterface(PHPInterface $interface): void
|
||||
{
|
||||
if (array_key_exists($interface->name, $this->interfaces)) {
|
||||
throw new \Exception($interface->name . " is already defined in stubs");
|
||||
}
|
||||
$this->interfaces[$interface->name] = $interface;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue