protected function typecastValue($value, $type)
{
if (is_scalar($type)) {
if (is_object($value) && method_exists($value, '__toString')) {
$value = $value->__toString();
}
switch ($type) {
case self::TYPE_INTEGER:
return (int) $value;
case self::TYPE_FLOAT:
return (double) $value;
case self::TYPE_BOOLEAN:
return (bool) $value;
case self::TYPE_STRING:
return (string) $value;
default:
throw new InvalidParamException("Unsupported type '{$type}'");
}
}
return call_user_func($type, $value);
}