/**
* Sanitizes a param.
*
* The return value is an array with the sanitized value and a boolean
* indicating if the original value was kept (allowing to use the sanitized value to explain the query).
*
* @return array{0: mixed, 1: bool, 2: bool}
*/
private function sanitizeParam(mixed
$var, ?\Throwable
$error): array
{ if (\
is_object($var)) { return [$o =
new ObjectParameter($var,
$error), false,
$o->
isStringable() && !
$error];
} if ($error) { return ['⚠ ' .
$error->
getMessage(), false, false
];
} if (\
is_array($var)) { $a =
[];
$explainable =
$runnable = true;
foreach ($var as $k =>
$v) { [$value,
$e,
$r] =
$this->
sanitizeParam($v, null
);