Skip to content

Commit 4fe2b4d

Browse files
committed
Bump min Doctrine DBAL requirement to 2.10
1 parent e00017e commit 4fe2b4d

File tree

12 files changed

+94
-172
lines changed

12 files changed

+94
-172
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
"doctrine/cache": "~1.6",
112112
"doctrine/collections": "~1.0",
113113
"doctrine/data-fixtures": "1.0.*",
114-
"doctrine/dbal": "~2.4",
114+
"doctrine/dbal": "^2.10",
115115
"doctrine/orm": "~2.4,>=2.4.5",
116116
"doctrine/reflection": "~1.0",
117117
"doctrine/doctrine-bundle": "^2.0",
@@ -134,6 +134,7 @@
134134
"twig/markdown-extra": "^2.12"
135135
},
136136
"conflict": {
137+
"doctrine/dbal": "<2.10",
137138
"masterminds/html5": "<2.6",
138139
"phpdocumentor/reflection-docblock": "<3.2.2",
139140
"phpdocumentor/type-resolver": "<0.3.0",

src/Symfony/Bridge/Doctrine/Form/DoctrineOrmTypeGuesser.php

+22-29
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Bridge\Doctrine\Form;
1313

14-
use Doctrine\DBAL\Types\Type;
1514
use Doctrine\DBAL\Types\Types;
1615
use Doctrine\ORM\Mapping\ClassMetadataInfo;
1716
use Doctrine\ORM\Mapping\MappingException as LegacyMappingException;
@@ -29,15 +28,9 @@ class DoctrineOrmTypeGuesser implements FormTypeGuesserInterface
2928

3029
private $cache = [];
3130

32-
private static $useDeprecatedConstants;
33-
3431
public function __construct(ManagerRegistry $registry)
3532
{
3633
$this->registry = $registry;
37-
38-
if (null === self::$useDeprecatedConstants) {
39-
self::$useDeprecatedConstants = !class_exists(Types::class);
40-
}
4134
}
4235

4336
/**
@@ -59,39 +52,39 @@ public function guessType(string $class, string $property)
5952
}
6053

6154
switch ($metadata->getTypeOfField($property)) {
62-
case self::$useDeprecatedConstants ? Type::TARRAY : Types::ARRAY:
63-
case self::$useDeprecatedConstants ? Type::SIMPLE_ARRAY : Types::SIMPLE_ARRAY:
55+
case Types::ARRAY:
56+
case Types::SIMPLE_ARRAY:
6457
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\CollectionType', [], Guess::MEDIUM_CONFIDENCE);
65-
case self::$useDeprecatedConstants ? Type::BOOLEAN : Types::BOOLEAN:
58+
case Types::BOOLEAN:
6659
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\CheckboxType', [], Guess::HIGH_CONFIDENCE);
67-
case self::$useDeprecatedConstants ? Type::DATETIME : Types::DATETIME_MUTABLE:
68-
case self::$useDeprecatedConstants ? Type::DATETIMETZ : Types::DATETIMETZ_MUTABLE:
60+
case Types::DATETIME_MUTABLE:
61+
case Types::DATETIMETZ_MUTABLE:
6962
case 'vardatetime':
7063
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\DateTimeType', [], Guess::HIGH_CONFIDENCE);
71-
case 'datetime_immutable':
72-
case 'datetimetz_immutable':
64+
case Types::DATE_IMMUTABLE:
65+
case Types::DATETIMETZ_IMMUTABLE:
7366
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\DateTimeType', ['input' => 'datetime_immutable'], Guess::HIGH_CONFIDENCE);
74-
case 'dateinterval':
67+
case Types::DATEINTERVAL:
7568
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\DateIntervalType', [], Guess::HIGH_CONFIDENCE);
76-
case self::$useDeprecatedConstants ? Type::DATE : Types::DATE_MUTABLE:
69+
case Types::DATE_MUTABLE:
7770
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\DateType', [], Guess::HIGH_CONFIDENCE);
78-
case 'date_immutable':
71+
case Types::DATE_IMMUTABLE:
7972
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\DateType', ['input' => 'datetime_immutable'], Guess::HIGH_CONFIDENCE);
80-
case self::$useDeprecatedConstants ? Type::TIME : Types::TIME_MUTABLE:
73+
case Types::TIME_MUTABLE:
8174
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\TimeType', [], Guess::HIGH_CONFIDENCE);
82-
case 'time_immutable':
75+
case Types::TIME_IMMUTABLE:
8376
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\TimeType', ['input' => 'datetime_immutable'], Guess::HIGH_CONFIDENCE);
84-
case self::$useDeprecatedConstants ? Type::DECIMAL : Types::DECIMAL:
77+
case Types::DECIMAL:
8578
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\NumberType', ['input' => 'string'], Guess::MEDIUM_CONFIDENCE);
86-
case self::$useDeprecatedConstants ? Type::FLOAT : Types::FLOAT:
79+
case Types::FLOAT:
8780
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\NumberType', [], Guess::MEDIUM_CONFIDENCE);
88-
case self::$useDeprecatedConstants ? Type::INTEGER : Types::INTEGER:
89-
case self::$useDeprecatedConstants ? Type::BIGINT : Types::BIGINT:
90-
case self::$useDeprecatedConstants ? Type::SMALLINT : Types::SMALLINT:
81+
case Types::INTEGER:
82+
case Types::BIGINT:
83+
case Types::SMALLINT:
9184
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\IntegerType', [], Guess::MEDIUM_CONFIDENCE);
92-
case self::$useDeprecatedConstants ? Type::STRING : Types::STRING:
85+
case Types::STRING:
9386
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\TextType', [], Guess::MEDIUM_CONFIDENCE);
94-
case self::$useDeprecatedConstants ? Type::TEXT : Types::TEXT:
87+
case Types::TEXT:
9588
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\TextareaType', [], Guess::MEDIUM_CONFIDENCE);
9689
default:
9790
return new TypeGuess('Symfony\Component\Form\Extension\Core\Type\TextType', [], Guess::LOW_CONFIDENCE);
@@ -114,7 +107,7 @@ public function guessRequired(string $class, string $property)
114107

115108
// Check whether the field exists and is nullable or not
116109
if (isset($classMetadata->fieldMappings[$property])) {
117-
if (!$classMetadata->isNullable($property) && (self::$useDeprecatedConstants ? Type::BOOLEAN : Types::BOOLEAN) !== $classMetadata->getTypeOfField($property)) {
110+
if (!$classMetadata->isNullable($property) && Types::BOOLEAN !== $classMetadata->getTypeOfField($property)) {
118111
return new ValueGuess(true, Guess::HIGH_CONFIDENCE);
119112
}
120113

@@ -151,7 +144,7 @@ public function guessMaxLength(string $class, string $property)
151144
return new ValueGuess($mapping['length'], Guess::HIGH_CONFIDENCE);
152145
}
153146

154-
if (\in_array($ret[0]->getTypeOfField($property), self::$useDeprecatedConstants ? [Type::DECIMAL, Type::FLOAT] : [Types::DECIMAL, Types::FLOAT])) {
147+
if (\in_array($ret[0]->getTypeOfField($property), [Types::DECIMAL, Types::FLOAT])) {
155148
return new ValueGuess(null, Guess::MEDIUM_CONFIDENCE);
156149
}
157150
}
@@ -166,7 +159,7 @@ public function guessPattern(string $class, string $property)
166159
{
167160
$ret = $this->getMetadata($class);
168161
if ($ret && isset($ret[0]->fieldMappings[$property]) && !$ret[0]->hasAssociation($property)) {
169-
if (\in_array($ret[0]->getTypeOfField($property), self::$useDeprecatedConstants ? [Type::DECIMAL, Type::FLOAT] : [Types::DECIMAL, Types::FLOAT])) {
162+
if (\in_array($ret[0]->getTypeOfField($property), [Types::DECIMAL, Types::FLOAT])) {
170163
return new ValueGuess(null, Guess::MEDIUM_CONFIDENCE);
171164
}
172165
}

src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php

+36-42
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Bridge\Doctrine\PropertyInfo;
1313

14-
use Doctrine\DBAL\Types\Type as DBALType;
1514
use Doctrine\DBAL\Types\Types;
1615
use Doctrine\ORM\EntityManagerInterface;
1716
use Doctrine\ORM\Mapping\ClassMetadata;
@@ -32,15 +31,10 @@ class DoctrineExtractor implements PropertyListExtractorInterface, PropertyTypeE
3231
{
3332
private $entityManager;
3433
private $classMetadataFactory;
35-
private static $useDeprecatedConstants;
3634

3735
public function __construct(EntityManagerInterface $entityManager)
3836
{
3937
$this->entityManager = $entityManager;
40-
41-
if (null === self::$useDeprecatedConstants) {
42-
self::$useDeprecatedConstants = !class_exists(Types::class);
43-
}
4438
}
4539

4640
/**
@@ -141,31 +135,31 @@ public function getTypes(string $class, string $property, array $context = [])
141135
switch ($builtinType) {
142136
case Type::BUILTIN_TYPE_OBJECT:
143137
switch ($typeOfField) {
144-
case self::$useDeprecatedConstants ? DBALType::DATE : Types::DATE_MUTABLE:
145-
case self::$useDeprecatedConstants ? DBALType::DATETIME : Types::DATETIME_MUTABLE:
146-
case self::$useDeprecatedConstants ? DBALType::DATETIMETZ : Types::DATETIMETZ_MUTABLE:
138+
case Types::DATE_MUTABLE:
139+
case Types::DATETIME_MUTABLE:
140+
case Types::DATETIMETZ_MUTABLE:
147141
case 'vardatetime':
148-
case self::$useDeprecatedConstants ? DBALType::TIME : Types::TIME_MUTABLE:
142+
case Types::TIME_MUTABLE:
149143
return [new Type(Type::BUILTIN_TYPE_OBJECT, $nullable, 'DateTime')];
150144

151-
case 'date_immutable':
152-
case 'datetime_immutable':
153-
case 'datetimetz_immutable':
154-
case 'time_immutable':
145+
case Types::DATE_IMMUTABLE:
146+
case Types::DATETIME_IMMUTABLE:
147+
case Types::DATETIMETZ_IMMUTABLE:
148+
case Types::TIME_IMMUTABLE:
155149
return [new Type(Type::BUILTIN_TYPE_OBJECT, $nullable, 'DateTimeImmutable')];
156150

157-
case 'dateinterval':
151+
case Types::DATEINTERVAL:
158152
return [new Type(Type::BUILTIN_TYPE_OBJECT, $nullable, 'DateInterval')];
159153
}
160154

161155
break;
162156
case Type::BUILTIN_TYPE_ARRAY:
163157
switch ($typeOfField) {
164-
case self::$useDeprecatedConstants ? DBALType::TARRAY : Types::ARRAY:
165-
case 'json_array':
158+
case Types::ARRAY:
159+
case Types::JSON_ARRAY:
166160
return [new Type(Type::BUILTIN_TYPE_ARRAY, $nullable, null, true)];
167161

168-
case self::$useDeprecatedConstants ? DBALType::SIMPLE_ARRAY : Types::SIMPLE_ARRAY:
162+
case Types::SIMPLE_ARRAY:
169163
return [new Type(Type::BUILTIN_TYPE_ARRAY, $nullable, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING))];
170164
}
171165
}
@@ -240,43 +234,43 @@ private function isAssociationNullable(array $associationMapping): bool
240234
private function getPhpType(string $doctrineType): ?string
241235
{
242236
switch ($doctrineType) {
243-
case self::$useDeprecatedConstants ? DBALType::SMALLINT : Types::SMALLINT:
244-
case self::$useDeprecatedConstants ? DBALType::INTEGER : Types::INTEGER:
237+
case Types::SMALLINT:
238+
case Types::INTEGER:
245239
return Type::BUILTIN_TYPE_INT;
246240

247-
case self::$useDeprecatedConstants ? DBALType::FLOAT : Types::FLOAT:
241+
case Types::FLOAT:
248242
return Type::BUILTIN_TYPE_FLOAT;
249243

250-
case self::$useDeprecatedConstants ? DBALType::BIGINT : Types::BIGINT:
251-
case self::$useDeprecatedConstants ? DBALType::STRING : Types::STRING:
252-
case self::$useDeprecatedConstants ? DBALType::TEXT : Types::TEXT:
253-
case self::$useDeprecatedConstants ? DBALType::GUID : Types::GUID:
254-
case self::$useDeprecatedConstants ? DBALType::DECIMAL : Types::DECIMAL:
244+
case Types::BIGINT:
245+
case Types::STRING:
246+
case Types::TEXT:
247+
case Types::GUID:
248+
case Types::DECIMAL:
255249
return Type::BUILTIN_TYPE_STRING;
256250

257-
case self::$useDeprecatedConstants ? DBALType::BOOLEAN : Types::BOOLEAN:
251+
case Types::BOOLEAN:
258252
return Type::BUILTIN_TYPE_BOOL;
259253

260-
case self::$useDeprecatedConstants ? DBALType::BLOB : Types::BLOB:
261-
case 'binary':
254+
case Types::BLOB:
255+
case Types::BINARY:
262256
return Type::BUILTIN_TYPE_RESOURCE;
263257

264-
case self::$useDeprecatedConstants ? DBALType::OBJECT : Types::OBJECT:
265-
case self::$useDeprecatedConstants ? DBALType::DATE : Types::DATE_MUTABLE:
266-
case self::$useDeprecatedConstants ? DBALType::DATETIME : Types::DATETIME_MUTABLE:
267-
case self::$useDeprecatedConstants ? DBALType::DATETIMETZ : Types::DATETIMETZ_MUTABLE:
258+
case Types::OBJECT:
259+
case Types::DATE_MUTABLE:
260+
case Types::DATETIME_MUTABLE:
261+
case Types::DATETIMETZ_MUTABLE:
268262
case 'vardatetime':
269-
case self::$useDeprecatedConstants ? DBALType::TIME : Types::TIME_MUTABLE:
270-
case 'date_immutable':
271-
case 'datetime_immutable':
272-
case 'datetimetz_immutable':
273-
case 'time_immutable':
274-
case 'dateinterval':
263+
case Types::TIME_MUTABLE:
264+
case Types::DATE_IMMUTABLE:
265+
case Types::DATETIME_IMMUTABLE:
266+
case Types::DATETIMETZ_IMMUTABLE:
267+
case Types::TIME_IMMUTABLE:
268+
case Types::DATEINTERVAL:
275269
return Type::BUILTIN_TYPE_OBJECT;
276270

277-
case self::$useDeprecatedConstants ? DBALType::TARRAY : Types::ARRAY:
278-
case self::$useDeprecatedConstants ? DBALType::SIMPLE_ARRAY : Types::SIMPLE_ARRAY:
279-
case 'json_array':
271+
case Types::ARRAY:
272+
case Types::SIMPLE_ARRAY:
273+
case Types::JSON_ARRAY:
280274
return Type::BUILTIN_TYPE_ARRAY;
281275
}
282276

src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php

+2-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Bridge\Doctrine\Security\RememberMe;
1313

1414
use Doctrine\DBAL\Connection;
15-
use Doctrine\DBAL\Types\Type;
1615
use Doctrine\DBAL\Types\Types;
1716
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken;
1817
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentTokenInterface;
@@ -41,15 +40,9 @@ class DoctrineTokenProvider implements TokenProviderInterface
4140
{
4241
private $conn;
4342

44-
private static $useDeprecatedConstants;
45-
4643
public function __construct(Connection $conn)
4744
{
4845
$this->conn = $conn;
49-
50-
if (null === self::$useDeprecatedConstants) {
51-
self::$useDeprecatedConstants = !class_exists(Types::class);
52-
}
5346
}
5447

5548
/**
@@ -97,7 +90,7 @@ public function updateToken(string $series, string $tokenValue, \DateTime $lastU
9790
];
9891
$paramTypes = [
9992
'value' => \PDO::PARAM_STR,
100-
'lastUsed' => self::$useDeprecatedConstants ? Type::DATETIME : Types::DATETIME_MUTABLE,
93+
'lastUsed' => Types::DATETIME_MUTABLE,
10194
'series' => \PDO::PARAM_STR,
10295
];
10396
$updated = $this->conn->executeUpdate($sql, $paramValues, $paramTypes);
@@ -126,7 +119,7 @@ public function createNewToken(PersistentTokenInterface $token)
126119
'username' => \PDO::PARAM_STR,
127120
'series' => \PDO::PARAM_STR,
128121
'value' => \PDO::PARAM_STR,
129-
'lastUsed' => self::$useDeprecatedConstants ? Type::DATETIME : Types::DATETIME_MUTABLE,
122+
'lastUsed' => Types::DATETIME_MUTABLE,
130123
];
131124
$this->conn->executeUpdate($sql, $paramValues, $paramTypes);
132125
}

src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php

+5-12
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313

1414
use Doctrine\Common\Collections\Collection;
1515
use Doctrine\DBAL\Types\Type as DBALType;
16-
use Doctrine\DBAL\Types\Types;
1716
use Doctrine\ORM\EntityManager;
1817
use Doctrine\ORM\Tools\Setup;
1918
use PHPUnit\Framework\TestCase;
2019
use Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor;
21-
use Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineDummy210;
20+
use Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineDummy;
2221
use Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineGeneratedValue;
2322
use Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineRelation;
2423
use Symfony\Component\PropertyInfo\Type;
@@ -58,12 +57,9 @@ public function testGetProperties()
5857
'binary',
5958
'customFoo',
6059
'bigint',
60+
'json',
6161
];
6262

63-
if (class_exists(Types::class)) {
64-
$expected[] = 'json';
65-
}
66-
6763
// Associations
6864
$expected = array_merge($expected, [
6965
'foo',
@@ -76,7 +72,7 @@ public function testGetProperties()
7672

7773
$this->assertEquals(
7874
$expected,
79-
$this->createExtractor()->getProperties(!class_exists(Types::class) ? 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineDummy' : DoctrineDummy210::class)
75+
$this->createExtractor()->getProperties(DoctrineDummy::class)
8076
);
8177
}
8278

@@ -100,7 +96,7 @@ public function testTestGetPropertiesWithEmbedded()
10096
*/
10197
public function testExtract($property, array $type = null)
10298
{
103-
$this->assertEquals($type, $this->createExtractor()->getTypes(!class_exists(Types::class) ? 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineDummy' : DoctrineDummy210::class, $property, []));
99+
$this->assertEquals($type, $this->createExtractor()->getTypes(DoctrineDummy::class, $property, []));
104100
}
105101

106102
public function testExtractWithEmbedded()
@@ -175,12 +171,9 @@ public function typesProvider()
175171
new Type(Type::BUILTIN_TYPE_OBJECT, false, DoctrineRelation::class)
176172
)]],
177173
['indexedByCustomType', null],
174+
['json', null],
178175
];
179176

180-
if (class_exists(Types::class)) {
181-
$provider[] = ['json', null];
182-
}
183-
184177
return $provider;
185178
}
186179

src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineDummy.php

+5
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,9 @@ class DoctrineDummy
122122
* @OneToMany(targetEntity="DoctrineRelation", mappedBy="customType", indexBy="customType")
123123
*/
124124
private $indexedByCustomType;
125+
126+
/**
127+
* @Column(type="json", nullable=true)
128+
*/
129+
private $json;
125130
}

0 commit comments

Comments
 (0)