private static function serializeXmlModel()

in src/Serializer.php [81:125]


    private static function serializeXmlModel(\XMLWriter $writer, string $name, Model $value): void
    {
        $ro = new \ReflectionObject($value);

        if (empty($name)) {
            $annotation = Functions::getXmlRootAnnotation($ro);
            if ($annotation != null) {
                $name = $annotation->name;
            }
            if (empty($name)) {
                $name = \get_class($value);
                if ($pos = \strrpos($name, '\\')) {
                    $name = \substr($name, $pos + 1);
                }
            }
        }

        // start element
        $writer->startElement($name);

        // children element
        foreach ($ro->getProperties() as $property) {
            $property->setAccessible(true);
            $val = $property->getValue($value);
            if (!isset($val)) {
                continue;
            }

            $annotation = Functions::getXmlElementAnnotation($property);
            if ($annotation == null) {
                continue;
            }

            if (is_array($val)) {
                foreach ($val as $vval) {
                    self::serializeXmlAny($writer, $annotation->rename, $vval, $annotation->format);
                }
            } else {
                self::serializeXmlAny($writer, $annotation->rename, $val, $annotation->format);
            }
        }

        // end element
        $writer->endElement();
    }