Skip to content

Commit a63fd41

Browse files
committed
Add hydration template annotations
1 parent 2de56d4 commit a63fd41

File tree

3 files changed

+31
-36
lines changed

3 files changed

+31
-36
lines changed

src/Generator/Client.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
3434
$factory = new BuilderFactory();
3535
$stmt = $factory->namespace(rtrim($namespace, '\\'));
3636

37-
$class = $factory->class('Client')->implement(new Node\Name('ClientInterface'))->makeFinal()->addStmt(
37+
$class = $factory->class('Client')->implement(new Node\Name('ClientInterface'))->makeFinal()->setDocComment(
38+
new Doc(implode(PHP_EOL, [
39+
'/**',
40+
' * @template H',
41+
' */',
42+
]))
43+
)->addStmt(
3844
$factory->property('authentication')->setType('\\' . AuthenticationInterface::class)->makeReadonly()->makePrivate()
3945
)->addStmt(
4046
$factory->property('browser')->setType('\\' . Browser::class)->makeReadonly()->makePrivate()
@@ -322,7 +328,14 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
322328
);
323329

324330
$class->addStmt(
325-
$factory->method('hydrateObject')->makePublic()->setReturnType('object')->addParam(
331+
$factory->method('hydrateObject')->makePublic()->setDocComment(
332+
new Doc(implode(PHP_EOL, [
333+
'/**',
334+
' * @param class-string<H> $className',
335+
' * @return H',
336+
' */',
337+
]))
338+
)->setReturnType('object')->addParam(
326339
(new Param('className'))->setType('string')
327340
)->addParam(
328341
(new Param('data'))->setType('array')

src/Generator/ClientInterface.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
3434
$factory = new BuilderFactory();
3535
$stmt = $factory->namespace(rtrim($namespace, '\\'));
3636

37-
$class = $factory->interface('ClientInterface');
37+
$class = $factory->interface('ClientInterface')->setDocComment(
38+
new Doc(implode(PHP_EOL, [
39+
'/**',
40+
' * @template H',
41+
' */',
42+
]))
43+
);
3844
$rawCallReturnTypes = [];
3945
$operationCalls = [];
4046
$callReturnTypes = [];
@@ -112,7 +118,14 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
112118
);
113119

114120
$class->addStmt(
115-
$factory->method('hydrateObject')->makePublic()->setReturnType('object')->addParam(
121+
$factory->method('hydrateObject')->makePublic()->setDocComment(
122+
new Doc(implode(PHP_EOL, [
123+
'/**',
124+
' * @param class-string<H> $className',
125+
' * @return H',
126+
' */',
127+
]))
128+
)->setReturnType('object')->addParam(
116129
(new Param('className'))->setType('string')
117130
)->addParam(
118131
(new Param('data'))->setType('array')

src/Generator/WebHooks.php

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ public static function generate(string $namespace, string $baseNamespace, array
5252
],
5353
Class_::MODIFIER_PUBLIC
5454
)
55-
)->addStmt(
56-
$factory->property('hydrator')->setType('\\' . $baseNamespace . 'OptimizedHydratorMapper')->makeReadonly()->makePrivate()
5755
)->addStmt(
5856
$factory->method('__construct')->makePublic()->addStmt(
5957
new Node\Expr\Assign(
@@ -117,37 +115,8 @@ public static function generate(string $namespace, string $baseNamespace, array
117115
)
118116
)
119117
))
120-
)->addStmt(
121-
$factory->method('hydrate')->makePublic()->setReturnType('object')->addParam(
122-
(new Param('event'))->setType('string')
123-
)->addParam(
124-
(new Param('data'))->setType('array')
125-
)->addStmt(new Node\Stmt\Return_(
126-
new Node\Expr\MethodCall(
127-
new Node\Expr\PropertyFetch(
128-
new Node\Expr\Variable('this'),
129-
'hydrator'
130-
),
131-
new Node\Name('hydrateObject'),
132-
[
133-
new Node\Arg(new Node\Expr\MethodCall(
134-
new Node\Expr\StaticCall(
135-
new Node\Name('self'),
136-
new Node\Name('resolve'),
137-
[
138-
new Node\Arg(new Node\Expr\Variable('event')),
139-
]
140-
),
141-
new Node\Name('resolve'),
142-
[
143-
new Node\Arg(new Node\Expr\Variable('data')),
144-
]
145-
)),
146-
new Node\Arg(new Node\Expr\Variable('data')),
147-
]
148-
)
149-
))
150118
);
119+
151120
yield new File($namespace . '\\' . 'WebHooks', $stmt->addStmt($class)->getNode());
152121
}
153122
}

0 commit comments

Comments
 (0)