public function typeCasting($value)
{
if ($value instanceof Raw) {
return $value;
}
if ($isa = $this->isa) {
if ($isa === 'int') {
return intval($value);
} elseif ($isa === 'str') {
return (string) $value;
} elseif ($isa === 'DateTime') {
if ($value === '' || $value === 0 || $value === false) {
return;
}
} elseif ($isa === 'bool') {
if ($value === null) {
return;
}
if ($value === '') {
return;
} else {
return filter_var($value, FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE));
}
return $value;
}
}
return $value;
}