$value) { $obj->{$key} = self::castAttribute($key, $obj->{$key}); } return $obj; } public static function castAttribute($key, $value) { switch ($key) { case 'int': case 'integer': return is_scalar($value) ? (int) $value : 0; case 'real': case 'float': case 'double': return is_scalar($value) ? (float) $value : 0; case 'string': return is_scalar($value) ? (string) $value : ''; case 'bool': case 'boolean': return is_scalar($value) ? boolval($value) : false; case 'object': return json_decode($value); case 'array': case 'json': return json_decode($value, true); default: return $value; } } }