Skip to content

Commit 3386716

Browse files
authored
Merge pull request #81 from php-api-clients/add-hydration-template-annotations
Add hydration template annotations
2 parents 42f73dd + a63fd41 commit 3386716

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()
@@ -374,7 +380,14 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
374380
);
375381

376382
$class->addStmt(
377-
$factory->method('hydrateObject')->makePublic()->setReturnType('object')->addParam(
383+
$factory->method('hydrateObject')->makePublic()->setDocComment(
384+
new Doc(implode(PHP_EOL, [
385+
'/**',
386+
' * @param class-string<H> $className',
387+
' * @return H',
388+
' */',
389+
]))
390+
)->setReturnType('object')->addParam(
378391
(new Param('className'))->setType('string')
379392
)->addParam(
380393
(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 = [];
@@ -122,7 +128,14 @@ public static function generate(string $namespace, array $clients, SchemaRegistr
122128
);
123129

124130
$class->addStmt(
125-
$factory->method('hydrateObject')->makePublic()->setReturnType('object')->addParam(
131+
$factory->method('hydrateObject')->makePublic()->setDocComment(
132+
new Doc(implode(PHP_EOL, [
133+
'/**',
134+
' * @param class-string<H> $className',
135+
' * @return H',
136+
' */',
137+
]))
138+
)->setReturnType('object')->addParam(
126139
(new Param('className'))->setType('string')
127140
)->addParam(
128141
(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)