|
2 | 2 |
|
3 | 3 | namespace PHPStan\Type\Doctrine\Descriptors;
|
4 | 4 |
|
| 5 | +use JsonSerializable; |
| 6 | +use PHPStan\Type\ArrayType; |
| 7 | +use PHPStan\Type\BooleanType; |
| 8 | +use PHPStan\Type\FloatType; |
| 9 | +use PHPStan\Type\IntegerType; |
5 | 10 | use PHPStan\Type\MixedType;
|
| 11 | +use PHPStan\Type\NullType; |
| 12 | +use PHPStan\Type\ObjectType; |
| 13 | +use PHPStan\Type\StringType; |
6 | 14 | use PHPStan\Type\Type;
|
| 15 | +use stdClass; |
7 | 16 |
|
8 | 17 | class JsonType implements DoctrineTypeDescriptor
|
9 | 18 | {
|
10 | 19 |
|
| 20 | + private static function getJsonType(): \PHPStan\Type\UnionType |
| 21 | + { |
| 22 | + $mixedType = new MixedType(); |
| 23 | + |
| 24 | + return new \PHPStan\Type\UnionType([ |
| 25 | + new ArrayType($mixedType, $mixedType), |
| 26 | + new BooleanType(), |
| 27 | + new FloatType(), |
| 28 | + new IntegerType(), |
| 29 | + new NullType(), |
| 30 | + new ObjectType(JsonSerializable::class), |
| 31 | + new ObjectType(stdClass::class), |
| 32 | + new StringType(), |
| 33 | + ]); |
| 34 | + } |
| 35 | + |
11 | 36 | public function getType(): string
|
12 | 37 | {
|
13 | 38 | return \Doctrine\DBAL\Types\JsonType::class;
|
14 | 39 | }
|
15 | 40 |
|
16 | 41 | public function getWritableToPropertyType(): Type
|
17 | 42 | {
|
18 |
| - return new \PHPStan\Type\ArrayType(new MixedType(), new MixedType()); |
| 43 | + return self::getJsonType(); |
19 | 44 | }
|
20 | 45 |
|
21 | 46 | public function getWritableToDatabaseType(): Type
|
22 | 47 | {
|
23 |
| - return new \PHPStan\Type\ArrayType(new MixedType(), new MixedType()); |
| 48 | + return self::getJsonType(); |
24 | 49 | }
|
25 | 50 |
|
26 | 51 | }
|
0 commit comments