registry = $registry; } public function registerRule(MappingRule $rule): void { $this->registry->register($rule); } public function map(mixed $data, MappingContext $context): MappingResult { $result = new MappingResult($data); foreach ($this->registry->getRules()->all() as $rule) { if (! $rule->supports($context)) { continue; } $data = $rule->apply($data, $context); $result = new MappingResult($data, array_merge($result->getRulesApplied(), [get_class($rule)]), $result->getMetadata()); } return $result; } }