Skip to content

Commit 559b3ab

Browse files
authored
Add performance improvements in serializeFields (#123)
1 parent 7a92ec6 commit 559b3ab

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/Context.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,14 @@ public function withInclude(?array $include): static
337337
return $new;
338338
}
339339

340+
public function withFieldAndInclude(Field $field, ?array $include): static
341+
{
342+
$new = clone $this;
343+
$new->field = $field;
344+
$new->include = $include;
345+
return $new;
346+
}
347+
340348
public function resourceMeta($model, array $meta): static
341349
{
342350
$this->resourceMeta[$model] = array_merge($this->resourceMeta[$model] ?? [], $meta);

src/Serializer.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,10 @@ private function serializeFields(string $key, Context $context): void
160160
continue;
161161
}
162162

163-
$fieldContext = $context
164-
->withField($field)
165-
->withInclude($context->include[$field->name] ?? null);
163+
$fieldContext = $context->withFieldAndInclude(
164+
$field,
165+
$context->include[$field->name] ?? null,
166+
);
166167

167168
if (!$field->isVisible($fieldContext)) {
168169
continue;
@@ -215,7 +216,7 @@ private function serializeLinks(string $key, Context $context): void
215216

216217
private function fieldProcessed(string $key, Field $field): bool
217218
{
218-
if (in_array($field, $this->processedFields[$key] ?? [])) {
219+
if (in_array($field, $this->processedFields[$key] ?? [], true)) {
219220
return true;
220221
}
221222

0 commit comments

Comments
 (0)