From 3d0f1634981487387d6c2b9b1219f465fa1a1e02 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Sun, 12 Jan 2025 12:02:31 +0100 Subject: [PATCH] Load object access information lazily --- src/Encoder/ObjectEncoder.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Encoder/ObjectEncoder.php b/src/Encoder/ObjectEncoder.php index 1892d22..33304a4 100644 --- a/src/Encoder/ObjectEncoder.php +++ b/src/Encoder/ObjectEncoder.php @@ -17,6 +17,7 @@ use VeeWee\Reflecta\Lens\Lens; use function is_array; use function Psl\Dict\map_with_key; +use function Psl\Fun\lazy; use function VeeWee\Reflecta\Iso\object_data; use function VeeWee\Xml\Writer\Builder\children as writeChildren; use function VeeWee\Xml\Writer\Builder\raw; @@ -42,7 +43,7 @@ public function __construct( */ public function iso(Context $context): Iso { - $objectAccess = ObjectAccess::forContext($context); + $objectAccess = lazy(static fn (): ObjectAccess => ObjectAccess::forContext($context)); return new Iso( /** @@ -50,7 +51,7 @@ public function iso(Context $context): Iso * @return non-empty-string */ function (object|array $value) use ($context, $objectAccess) : string { - return $this->to($context, $objectAccess, $value); + return $this->to($context, $objectAccess(), $value); }, /** * @param non-empty-string|Element $value @@ -59,7 +60,7 @@ function (object|array $value) use ($context, $objectAccess) : string { function (string|Element $value) use ($context, $objectAccess) : object { return $this->from( $context, - $objectAccess, + $objectAccess(), ($value instanceof Element ? $value : Element::fromString($value)) ); }