engine/skin: fix for php 8.3

This commit is contained in:
E. S. 2024-07-28 21:46:53 +03:00
parent fc4dc5c3d4
commit d40756540c

View File

@ -159,7 +159,14 @@ class SkinContext {
$fn = $this->ns.'\\'.$name;
$refl = new ReflectionFunction($fn);
$fparams = $refl->getParameters();
assert(count($fparams) == count($arguments) + 1, "$fn: invalid number of arguments (".count($fparams)." != ".(count($arguments) + 1).")");
$fparams_required_count = 0;
foreach ($fparams as $param) {
if (!$param->isDefaultValueAvailable())
$fparams_required_count++;
}
$given_count = count($arguments)+1;
assert($given_count >= $fparams_required_count && $given_count <= count($fparams),
"$fn: invalid number of arguments (function has ".$fparams_required_count." required arguments".(count($fparams) != $fparams_required_count ? ' and '.count($fparams).' total argumments' : '').", received ".(count($arguments) + 1).")");
foreach ($fparams as $n => $param) {
if ($n == 0)