-
Notifications
You must be signed in to change notification settings - Fork 125
/
ModelGenerator.php
45 lines (37 loc) · 1.44 KB
/
ModelGenerator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
namespace Jane\OpenApi\Generator;
use Jane\JsonSchema\Generator\ModelGenerator as BaseModelGenerator;
use Jane\JsonSchema\Guesser\Guess\ClassGuess as BaseClassGuess;
use Jane\JsonSchema\Guesser\Guess\Property;
use Jane\OpenApi\Generator\Model\ClassGenerator;
use Jane\OpenApi\Guesser\Guess\ClassGuess;
use Jane\OpenApi\Guesser\Guess\MultipleClass;
use PhpParser\Node\Stmt;
class ModelGenerator extends BaseModelGenerator
{
use ClassGenerator;
protected function doCreateClassMethods(BaseClassGuess $classGuess, Property $property, string $namespace, bool $required)
{
$methods = [];
$methods[] = $this->createGetter($property, $namespace, $required);
$methods[] = $this->createSetter($property, $namespace, $required, $classGuess instanceof MultipleClass ? false : true);
return $methods;
}
protected function doCreateModel(BaseClassGuess $class, $properties, $methods): Stmt\Class_
{
$extends = null;
if ($class instanceof ClassGuess &&
$class->getMultipleClass() instanceof MultipleClass) {
$extends = $this->getNaming()->getClassName($class->getMultipleClass()->getName());
}
$classModel = $this->createModel(
$class->getName(),
$properties,
$methods,
\count($class->getExtensionsType()) > 0,
$class->isDeprecated(),
$extends
);
return $classModel;
}
}