Conditions | 3 |
Paths | 4 |
Total Lines | 20 |
Code Lines | 9 |
Lines | 0 |
Ratio | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
1 | <?php |
||
42 | public function accept(Visitor $visitor) |
||
43 | { |
||
44 | /** @var array<int|float> $args */ |
||
45 | $args = []; |
||
46 | foreach ($this->args as $arg) { |
||
47 | $args[] = $visitor->visit($arg); |
||
48 | } |
||
49 | |||
50 | $invokableFunctionClass = FunctionModel::BUILT_IN_FUNCTIONS[$this->function->value] ?? null; |
||
51 | |||
52 | if ($invokableFunctionClass === null) { |
||
53 | throw new UnknownFunction('Function ' . $this->function->value . ' is unknown'); |
||
54 | } |
||
55 | |||
56 | $rInvokableFunction = new \ReflectionClass($invokableFunctionClass); |
||
57 | /** @var FunctionInterface $invokable */ |
||
58 | /** @psalm-suppress MixedArgumentTypeCoercion */ |
||
59 | $invokable = $rInvokableFunction->newInstanceArgs($args); |
||
60 | |||
61 | return $invokable->__invoke(); |
||
62 | } |
||
63 | } |