You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1017 B
39 lines
1017 B
<?php declare(strict_types=1); |
|
|
|
namespace PhpParser\Node\Expr; |
|
|
|
use PhpParser\Node\Arg; |
|
use PhpParser\Node\Expr; |
|
use PhpParser\Node\VariadicPlaceholder; |
|
|
|
abstract class CallLike extends Expr { |
|
/** |
|
* Return raw arguments, which may be actual Args, or VariadicPlaceholders for first-class |
|
* callables. |
|
* |
|
* @return array<Arg|VariadicPlaceholder> |
|
*/ |
|
abstract public function getRawArgs(): array; |
|
|
|
/** |
|
* Returns whether this call expression is actually a first class callable. |
|
*/ |
|
public function isFirstClassCallable(): bool { |
|
foreach ($this->getRawArgs() as $arg) { |
|
if ($arg instanceof VariadicPlaceholder) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
/** |
|
* Assert that this is not a first-class callable and return only ordinary Args. |
|
* |
|
* @return Arg[] |
|
*/ |
|
public function getArgs(): array { |
|
assert(!$this->isFirstClassCallable()); |
|
return $this->getRawArgs(); |
|
} |
|
} |