From ea86f8db07c44ff4cfe651b396bf737b71edd004 Mon Sep 17 00:00:00 2001 From: Jeremiah VALERIE Date: Wed, 29 Dec 2021 22:35:04 +0100 Subject: [PATCH] Add Lazy behavior when using resolver as a service --- src/Generator/TypeBuilder.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Generator/TypeBuilder.php b/src/Generator/TypeBuilder.php index 243e7517b..5f73542ff 100644 --- a/src/Generator/TypeBuilder.php +++ b/src/Generator/TypeBuilder.php @@ -886,9 +886,14 @@ private function buildCallback(Callback $callback, array $argNames, ?callable $e return $expressionBuilder($callback->expression); } } elseif (null !== $callback->id) { - $fn = "$this->gqlServices->get('$callback->id')"; + $fnExpression = "$this->gqlServices->get('$callback->id')"; + if (null !== $callback->method) { + $fnExpression = "[$fnExpression, '$callback->method']"; + } - return Collection::numeric([$fn, $callback->method ?? '__invoke']); + return ArrowFunction::new() + ->addArguments(...$argNames) + ->setExpression(Literal::new("($fnExpression)(...\\func_get_args())")); } else { return Literal::new("'$callback->method'"); }