Fix ReflectionParameter::isArray() was deprecated as of PHP 8.0.0

This commit is contained in:
nathan 2021-10-13 10:52:56 -06:00
parent 7502749ef1
commit 9de404da9c

View File

@ -558,7 +558,16 @@ class Widget
error_log("Missing required parameter {$param->getPosition()}: {$param->getName()}");
$call = false;
}
if($param->isArray() && !is_array($params[$index]))
// Check to see if method wants an array, and we're providing it
$paramType = $param->getType();
if(!$paramType)
{
continue;
}
$types = $paramType instanceof \ReflectionUnionType
? $paramType->getTypes()
: [$paramType];
if(in_array('array', array_map(fn(\ReflectionNamedType $t) => $t->getName(), $types)) && !is_array($params[$index]))
{
error_log("$method_name expects an array for {$param->getPosition()}: {$param->getName()}");
$params[$index] = (array)$params[$index];