| 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 | } |