diff --git a/system/DataConverter/DataConverter.php b/system/DataConverter/DataConverter.php index 123e1eefe72b..25e38936fd9d 100644 --- a/system/DataConverter/DataConverter.php +++ b/system/DataConverter/DataConverter.php @@ -29,6 +29,13 @@ */ private DataCaster $dataCaster; + /** + * List of field names defined in $types. + * + * @var list + */ + private array $typeFields; + /** * @param array $castHandlers Custom convert handlers * @@ -62,6 +69,7 @@ public function __construct( private Closure|string|null $extractor = null, ) { $this->dataCaster = new DataCaster($castHandlers, $types, $this->helper); + $this->typeFields = array_keys($types); } /** @@ -75,7 +83,7 @@ public function __construct( */ public function fromDataSource(array $data): array { - foreach (array_keys($this->types) as $field) { + foreach ($this->typeFields as $field) { if (array_key_exists($field, $data)) { $data[$field] = $this->dataCaster->castAs($data[$field], $field, 'get'); } @@ -95,7 +103,7 @@ public function fromDataSource(array $data): array */ public function toDataSource(array $phpData): array { - foreach (array_keys($this->types) as $field) { + foreach ($this->typeFields as $field) { if (array_key_exists($field, $phpData)) { $phpData[$field] = $this->dataCaster->castAs($phpData[$field], $field, 'set'); }