(int) $data, 'string' => (string) $data, 'float' => (float) $data, 'array' => (array) $data, 'bool' => (bool) $data, 'mixed' => $data, default => $this->from($data, $class), }; } private function from(mixed $data, string $class): mixed { if (method_exists($class, 'jsonDeSerialize')) { return $class::jsonDeSerialize($data); } return $data; } }