-
-
Notifications
You must be signed in to change notification settings - Fork 117
/
InterfaceMethodUpdater.php
36 lines (31 loc) · 1.13 KB
/
InterfaceMethodUpdater.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
namespace Phpactor\CodeBuilder\Adapter\TolerantParser\Updater;
use Microsoft\PhpParser\ClassLike;
use Microsoft\PhpParser\Node\Expression\ObjectCreationExpression;
use Microsoft\PhpParser\Node\InterfaceMembers;
use Microsoft\PhpParser\Node\Statement\InterfaceDeclaration;
use Phpactor\CodeBuilder\Domain\Renderer;
use Phpactor\CodeBuilder\Domain\Prototype\Method;
use Microsoft\PhpParser\Node;
/**
* @extends AbstractMethodUpdater<InterfaceMembers>
*/
class InterfaceMethodUpdater extends AbstractMethodUpdater
{
public function memberDeclarationsNode(ClassLike|ObjectCreationExpression $classNode): InterfaceMembers
{
if ($classNode instanceof InterfaceDeclaration) {
return $classNode->interfaceMembers;
}
return new InterfaceMembers();
}
public function renderMethod(Renderer $renderer, Method $method): string
{
return $renderer->render($method) . ';';
}
/** @return array<Node> */
protected function memberDeclarations(ClassLike|ObjectCreationExpression $classNode): array
{
return $classNode->interfaceMembers?->interfaceMemberDeclarations ?? [];
}
}