|scalar|null> */ final class ArrayNormalizer implements Normalizer { /** * @internal */ public function __construct( private Transformer $transformer, ) {} /** @pure */ public function normalize(mixed $value): mixed { /** @var array|scalar|null */ return $this->format( $this->transformer->transform($value), ); } private function format(mixed $value): mixed { if (is_iterable($value)) { if (! is_array($value)) { $value = iterator_to_array($value); } $value = array_map($this->format(...), $value); } elseif ($value instanceof EmptyObject) { return []; } return $value; } }