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.
35 lines
970 B
35 lines
970 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 { |
|
$rawArgs = $this->getRawArgs(); |
|
return count($rawArgs) === 1 && current($rawArgs) instanceof VariadicPlaceholder; |
|
} |
|
|
|
/** |
|
* 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(); |
|
} |
|
}
|
|
|