into(static::class) ->through(AuthorizedDataPipe::class) ->through(MapPropertiesDataPipe::class) ->through(ValidatePropertiesDataPipe::class) ->through(CastPropertiesDataPipe::class); } public function fill(iterable $payload): static { $pipeline = static::fillPipeline(); foreach (static::normalizers() as $normalizer) { $pipeline->normalizer($normalizer); } $properties = $pipeline->using($payload)->execute(); $dataClass = app(DataConfig::class)->getDataClass(static::class); $dataClass ->properties ->filter( fn (DataProperty $property) => $properties->has($property->name) ) ->each( fn (DataProperty $property) => $this->{$property->name} = $properties->get($property->name) ); return $this; } }