diff options
author | madman-81 <50033071+madman-81@users.noreply.github.com> | 2022-08-04 15:07:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-04 15:07:41 +0300 |
commit | 9538001a42988507a29aa55eef7f59f0462665ab (patch) | |
tree | 02669ab470de08a26d4d694a515c7e40edb055eb /src/NXP/Classes/CustomFunction.php | |
parent | 08b432e09dd05b0b793a2379e8e380582c9877dc (diff) |
Throw an IncorrectNumberOfFunctionParametersException if a function gets more arguments than it supports (#117)
* Throw an IncorrectNumberOfFunctionParametersException if a function gets more arguments than it supports
* Update CustomFunction.php
Code Style
Co-authored-by: Bruce Wells <brucekwells@gmail.com>
Diffstat (limited to 'src/NXP/Classes/CustomFunction.php')
-rw-r--r-- | src/NXP/Classes/CustomFunction.php | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/NXP/Classes/CustomFunction.php b/src/NXP/Classes/CustomFunction.php index 6e9ffc5..43c5b55 100644 --- a/src/NXP/Classes/CustomFunction.php +++ b/src/NXP/Classes/CustomFunction.php @@ -15,6 +15,8 @@ class CustomFunction */ public $function; + private bool $isVariadic; + private int $totalParamCount; private int $requiredParamCount; /** @@ -26,7 +28,10 @@ class CustomFunction { $this->name = $name; $this->function = $function; - $this->requiredParamCount = (new ReflectionFunction($function))->getNumberOfRequiredParameters(); + $reflection = (new ReflectionFunction($function)); + $this->isVariadic = $reflection->isVariadic(); + $this->totalParamCount = $reflection->getNumberOfParameters(); + $this->requiredParamCount = $reflection->getNumberOfRequiredParameters(); } @@ -40,6 +45,9 @@ class CustomFunction if ($paramCountInStack < $this->requiredParamCount) { throw new IncorrectNumberOfFunctionParametersException($this->name); } + if ($paramCountInStack > $this->totalParamCount && ! $this->isVariadic) { + throw new IncorrectNumberOfFunctionParametersException($this->name); + } $args = []; if ($paramCountInStack > 0) { |