From 77c1a8255f466848bbe8d2789f8690de68dc8d23 Mon Sep 17 00:00:00 2001 From: Markus Sanin Date: Fri, 29 May 2026 16:29:50 +0200 Subject: [PATCH] Add performance improvements in serializeFields --- src/Context.php | 8 ++++++++ src/Serializer.php | 9 +++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Context.php b/src/Context.php index 95fb0fa..763e2f3 100644 --- a/src/Context.php +++ b/src/Context.php @@ -337,6 +337,14 @@ public function withInclude(?array $include): static return $new; } + public function withFieldAndInclude(Field $field, ?array $include): static + { + $new = clone $this; + $new->field = $field; + $new->include = $include; + return $new; + } + public function resourceMeta($model, array $meta): static { $this->resourceMeta[$model] = array_merge($this->resourceMeta[$model] ?? [], $meta); diff --git a/src/Serializer.php b/src/Serializer.php index 99d7a51..7ef100b 100644 --- a/src/Serializer.php +++ b/src/Serializer.php @@ -160,9 +160,10 @@ private function serializeFields(string $key, Context $context): void continue; } - $fieldContext = $context - ->withField($field) - ->withInclude($context->include[$field->name] ?? null); + $fieldContext = $context->withFieldAndInclude( + $field, + $context->include[$field->name] ?? null, + ); if (!$field->isVisible($fieldContext)) { continue; @@ -215,7 +216,7 @@ private function serializeLinks(string $key, Context $context): void private function fieldProcessed(string $key, Field $field): bool { - if (in_array($field, $this->processedFields[$key] ?? [])) { + if (in_array($field, $this->processedFields[$key] ?? [], true)) { return true; }