Skip to content

Commit

Permalink
avoid calling undefined built-in is_*() functions
Browse files Browse the repository at this point in the history
  • Loading branch information
xabbuh committed Jun 5, 2024
1 parent fb64f33 commit 138bb17
Showing 1 changed file with 34 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -566,11 +566,23 @@ private function validateAndDenormalizeLegacy(array $types, string $currentClass
return (float) $data;
}

if ((LegacyType::BUILTIN_TYPE_FALSE === $builtinType && false === $data) || (LegacyType::BUILTIN_TYPE_TRUE === $builtinType && true === $data)) {
return $data;
}

if (('is_'.$builtinType)($data)) {
$dataMatchesExpectedType = match ($builtinType) {
LegacyType::BUILTIN_TYPE_ARRAY => is_array($data),
LegacyType::BUILTIN_TYPE_BOOL => is_bool($data),
LegacyType::BUILTIN_TYPE_CALLABLE => is_callable($data),
LegacyType::BUILTIN_TYPE_FALSE => false === $data,
LegacyType::BUILTIN_TYPE_FLOAT => is_float($data),
LegacyType::BUILTIN_TYPE_INT => is_int($data),
LegacyType::BUILTIN_TYPE_ITERABLE => is_iterable($data),
LegacyType::BUILTIN_TYPE_NULL => null === $data,
LegacyType::BUILTIN_TYPE_OBJECT => is_object($data),
LegacyType::BUILTIN_TYPE_RESOURCE => $data,
LegacyType::BUILTIN_TYPE_STRING => is_string($data),
LegacyType::BUILTIN_TYPE_TRUE => true === $data,
default => false,
};

if ($dataMatchesExpectedType) {
return $data;
}
} catch (NotNormalizableValueException|InvalidArgumentException $e) {
Expand Down Expand Up @@ -773,11 +785,23 @@ private function validateAndDenormalize(Type $type, string $currentClass, string
return (float) $data;
}

if ((TypeIdentifier::FALSE === $typeIdentifier && false === $data) || (TypeIdentifier::TRUE === $typeIdentifier && true === $data)) {
return $data;
}

if (('is_'.$typeIdentifier->value)($data)) {
$dataMatchesExpectedType = match ($typeIdentifier) {
TypeIdentifier::ARRAY => is_array($data),
TypeIdentifier::BOOL => is_bool($data),
TypeIdentifier::CALLABLE => is_callable($data),
TypeIdentifier::FALSE => false === $data,
TypeIdentifier::FLOAT => is_float($data),
TypeIdentifier::INT => is_int($data),
TypeIdentifier::ITERABLE => is_iterable($data),
TypeIdentifier::NULL => null === $data,
TypeIdentifier::OBJECT => is_object($data),
TypeIdentifier::RESOURCE => $data,
TypeIdentifier::STRING => is_string($data),
TypeIdentifier::TRUE => true === $data,
default => false,
};

if ($dataMatchesExpectedType) {
return $data;
}
} catch (NotNormalizableValueException|InvalidArgumentException $e) {
Expand Down

0 comments on commit 138bb17

Please sign in to comment.