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