Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php declare(strict_types=1);
2
 
3
namespace PhpParser\Node\Expr;
4
 
5
use PhpParser\Node\Arg;
6
use PhpParser\Node\Expr;
7
use PhpParser\Node\VariadicPlaceholder;
8
 
9
abstract class CallLike extends Expr {
10
    /**
11
     * Return raw arguments, which may be actual Args, or VariadicPlaceholders for first-class
12
     * callables.
13
     *
14
     * @return array<Arg|VariadicPlaceholder>
15
     */
16
    abstract public function getRawArgs(): array;
17
 
18
    /**
19
     * Returns whether this call expression is actually a first class callable.
20
     */
21
    public function isFirstClassCallable(): bool {
22
        foreach ($this->getRawArgs() as $arg) {
23
            if ($arg instanceof VariadicPlaceholder) {
24
                return true;
25
            }
26
        }
27
        return false;
28
    }
29
 
30
    /**
31
     * Assert that this is not a first-class callable and return only ordinary Args.
32
     *
33
     * @return Arg[]
34
     */
35
    public function getArgs(): array {
36
        assert(!$this->isFirstClassCallable());
37
        return $this->getRawArgs();
38
    }
39
}