Skip to content

Commit 0c4f7ea

Browse files
authored
Merge pull request #5788 from morozov/remove-event-manager
Remove extension via Doctrine Event Manager
2 parents 340a882 + a478111 commit 0c4f7ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+95
-2015
lines changed

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
"php": "^8.1",
3535
"composer-runtime-api": "^2",
3636
"doctrine/deprecations": "^0.5.3|^1",
37-
"doctrine/event-manager": "^1|^2",
3837
"psr/cache": "^1|^2|^3",
3938
"psr/log": "^1|^2|^3"
4039
},

psalm.xml.dist

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -32,80 +32,15 @@
3232
<file name="src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php"/>
3333
</errorLevel>
3434
</ConflictingReferenceConstraint>
35-
<DeprecatedClass>
36-
<errorLevel type="suppress">
37-
<!--
38-
TODO: remove in 4.0.0
39-
-->
40-
<referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableAddColumnEventArgs"/>
41-
<referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableChangeColumnEventArgs"/>
42-
<referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableEventArgs"/>
43-
<referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableRemoveColumnEventArgs"/>
44-
<referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableRenameColumnEventArgs"/>
45-
<referencedClass name="Doctrine\DBAL\Event\SchemaCreateTableColumnEventArgs"/>
46-
<referencedClass name="Doctrine\DBAL\Event\SchemaCreateTableEventArgs"/>
47-
<referencedClass name="Doctrine\DBAL\Event\SchemaDropTableEventArgs"/>
48-
<referencedClass name="Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs"/>
49-
<referencedClass name="Doctrine\DBAL\Event\SchemaEventArgs"/>
50-
<referencedClass name="Doctrine\DBAL\Event\SchemaIndexDefinitionEventArgs"/>
51-
<referencedClass name="Doctrine\DBAL\Event\TransactionEventArgs"/>
52-
<referencedClass name="Doctrine\DBAL\Event\TransactionBeginEventArgs"/>
53-
<referencedClass name="Doctrine\DBAL\Event\TransactionCommitEventArgs"/>
54-
<referencedClass name="Doctrine\DBAL\Event\TransactionRollBackEventArgs"/>
55-
<referencedClass name="Doctrine\DBAL\Event\ConnectionEventArgs"/>
56-
<referencedClass name="Doctrine\DBAL\Event\Listeners\OracleSessionInit"/>
57-
<referencedClass name="Doctrine\DBAL\Event\Listeners\SQLSessionInit"/>
58-
<referencedClass name="Doctrine\DBAL\Event\Listeners\SQLiteSessionInit"/>
59-
<referencedClass name="Doctrine\DBAL\Events"/>
60-
</errorLevel>
61-
</DeprecatedClass>
62-
<DeprecatedConstant>
63-
<errorLevel type="suppress">
64-
<!--
65-
TODO: remove in 4.0.0
66-
-->
67-
<file name="src/Connection.php"/>
68-
<file name="src/Connections/PrimaryReadReplicaConnection.php"/>
69-
<file name="src/Event/Listeners/OracleSessionInit.php"/>
70-
<file name="src/Event/Listeners/SQLSessionInit.php"/>
71-
<file name="src/Event/Listeners/SQLiteSessionInit.php"/>
72-
<file name="src/Platforms/AbstractPlatform.php"/>
73-
<file name="src/Schema/AbstractSchemaManager.php"/>
74-
<file name="tests/ConnectionTest.php"/>
75-
<file name="tests/Events/OracleSessionInitTest.php"/>
76-
<file name="tests/Events/SQLSessionInitTest.php"/>
77-
<file name="tests/Functional/Schema/SchemaManagerFunctionalTestCase.php"/>
78-
<file name="tests/Platforms/AbstractPlatformTestCase.php"/>
79-
</errorLevel>
80-
</DeprecatedConstant>
8135
<DeprecatedMethod>
8236
<errorLevel type="suppress">
8337
<!--
8438
This suppression should be removed after 2022
8539
See https://github.com/doctrine/dbal/pull/4317
8640
-->
8741
<file name="tests/Functional/LegacyAPITest.php"/>
88-
<!--
89-
TODO: remove in 4.0.0
90-
-->
91-
<referencedMethod name="Doctrine\DBAL\Query\QueryBuilder::getConnection"/>
92-
<!--
93-
TODO: remove in 4.0.0
94-
-->
95-
<referencedMethod name="Doctrine\DBAL\Connection::getEventManager"/>
96-
<referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getEventManager"/>
97-
<referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::setEventManager"/>
9842
</errorLevel>
9943
</DeprecatedMethod>
100-
<DeprecatedProperty>
101-
<errorLevel type="suppress">
102-
<!--
103-
TODO: remove in 4.0.0
104-
-->
105-
<referencedProperty name="Doctrine\DBAL\Connection::$_eventManager"/>
106-
<referencedProperty name="Doctrine\DBAL\Platforms\AbstractPlatform::$_eventManager"/>
107-
</errorLevel>
108-
</DeprecatedProperty>
10944
<DocblockTypeContradiction>
11045
<errorLevel type="suppress">
11146
<!--

src/Connection.php

Lines changed: 7 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace Doctrine\DBAL;
66

77
use Closure;
8-
use Doctrine\Common\EventManager;
98
use Doctrine\DBAL\Cache\ArrayResult;
109
use Doctrine\DBAL\Cache\CacheException;
1110
use Doctrine\DBAL\Cache\Exception\NoResultDriverConfigured;
@@ -14,9 +13,6 @@
1413
use Doctrine\DBAL\Driver\API\ExceptionConverter;
1514
use Doctrine\DBAL\Driver\Connection as DriverConnection;
1615
use Doctrine\DBAL\Driver\Statement as DriverStatement;
17-
use Doctrine\DBAL\Event\TransactionBeginEventArgs;
18-
use Doctrine\DBAL\Event\TransactionCommitEventArgs;
19-
use Doctrine\DBAL\Event\TransactionRollBackEventArgs;
2016
use Doctrine\DBAL\Exception\CommitFailedRollbackOnly;
2117
use Doctrine\DBAL\Exception\ConnectionLost;
2218
use Doctrine\DBAL\Exception\DriverException;
@@ -43,7 +39,7 @@
4339
use function sprintf;
4440

4541
/**
46-
* A database abstraction-level connection that implements features like events, transaction isolation levels,
42+
* A database abstraction-level connection that implements features like transaction isolation levels,
4743
* configuration, emulated transaction nesting, lazy connecting and more.
4844
*
4945
* @psalm-import-type Params from DriverManager
@@ -73,9 +69,6 @@ class Connection implements ServerVersionProvider
7369

7470
protected Configuration $_config;
7571

76-
/** @deprecated */
77-
protected EventManager $_eventManager;
78-
7972
/**
8073
* The current auto-commit mode of this connection.
8174
*/
@@ -117,23 +110,20 @@ class Connection implements ServerVersionProvider
117110
*
118111
* @internal The connection can be only instantiated by the driver manager.
119112
*
120-
* @param array<string, mixed> $params The connection parameters.
121-
* @param Driver $driver The driver to use.
122-
* @param Configuration|null $config The configuration, optional.
123-
* @param EventManager|null $eventManager The event manager, optional.
113+
* @param array<string, mixed> $params The connection parameters.
114+
* @param Driver $driver The driver to use.
115+
* @param Configuration|null $config The configuration, optional.
124116
* @psalm-param Params $params
125117
* @phpstan-param array<string,mixed> $params
126118
*/
127119
public function __construct(
128120
array $params,
129121
protected Driver $driver,
130122
?Configuration $config = null,
131-
?EventManager $eventManager = null,
132123
) {
133-
$this->_config = $config ?? new Configuration();
134-
$this->_eventManager = $eventManager ?? new EventManager();
135-
$this->params = $params;
136-
$this->autoCommit = $this->_config->getAutoCommit();
124+
$this->_config = $config ?? new Configuration();
125+
$this->params = $params;
126+
$this->autoCommit = $this->_config->getAutoCommit();
137127
}
138128

139129
/**
@@ -185,23 +175,6 @@ public function getConfiguration(): Configuration
185175
return $this->_config;
186176
}
187177

188-
/**
189-
* Gets the EventManager used by the Connection.
190-
*
191-
* @deprecated
192-
*/
193-
public function getEventManager(): EventManager
194-
{
195-
Deprecation::triggerIfCalledFromOutside(
196-
'doctrine/dbal',
197-
'https://github.com/doctrine/dbal/issues/5784',
198-
'%s is deprecated.',
199-
__METHOD__,
200-
);
201-
202-
return $this->_eventManager;
203-
}
204-
205178
/**
206179
* Gets the DatabasePlatform for the connection.
207180
*
@@ -217,7 +190,6 @@ public function getDatabasePlatform(): AbstractPlatform
217190
}
218191

219192
$this->platform = $this->driver->getDatabasePlatform($versionProvider);
220-
$this->platform->setEventManager($this->_eventManager);
221193
}
222194

223195
return $this->platform;
@@ -252,18 +224,6 @@ protected function connect(): DriverConnection
252224
$this->beginTransaction();
253225
}
254226

255-
if ($this->_eventManager->hasListeners(Events::postConnect)) {
256-
Deprecation::trigger(
257-
'doctrine/dbal',
258-
'https://github.com/doctrine/dbal/issues/5784',
259-
'Subscribing to %s events is deprecated. Implement a middleware instead.',
260-
Events::postConnect,
261-
);
262-
263-
$eventArgs = new Event\ConnectionEventArgs($this);
264-
$this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
265-
}
266-
267227
return $connection;
268228
}
269229

@@ -1026,21 +986,6 @@ public function beginTransaction(): void
1026986
} else {
1027987
$this->createSavepoint($this->_getNestedTransactionSavePointName());
1028988
}
1029-
1030-
$eventManager = $this->getEventManager();
1031-
1032-
if (! $eventManager->hasListeners(Events::onTransactionBegin)) {
1033-
return;
1034-
}
1035-
1036-
Deprecation::trigger(
1037-
'doctrine/dbal',
1038-
'https://github.com/doctrine/dbal/issues/5784',
1039-
'Subscribing to %s events is deprecated.',
1040-
Events::onTransactionBegin,
1041-
);
1042-
1043-
$eventManager->dispatchEvent(Events::onTransactionBegin, new TransactionBeginEventArgs($this));
1044989
}
1045990

1046991
/** @throws Exception */
@@ -1068,19 +1013,6 @@ public function commit(): void
10681013

10691014
--$this->transactionNestingLevel;
10701015

1071-
$eventManager = $this->getEventManager();
1072-
1073-
if ($eventManager->hasListeners(Events::onTransactionCommit)) {
1074-
Deprecation::trigger(
1075-
'doctrine/dbal',
1076-
'https://github.com/doctrine/dbal/issues/5784',
1077-
'Subscribing to %s events is deprecated.',
1078-
Events::onTransactionCommit,
1079-
);
1080-
1081-
$eventManager->dispatchEvent(Events::onTransactionCommit, new TransactionCommitEventArgs($this));
1082-
}
1083-
10841016
if ($this->autoCommit !== false || $this->transactionNestingLevel !== 0) {
10851017
return;
10861018
}
@@ -1135,21 +1067,6 @@ public function rollBack(): void
11351067
$this->rollbackSavepoint($this->_getNestedTransactionSavePointName());
11361068
--$this->transactionNestingLevel;
11371069
}
1138-
1139-
$eventManager = $this->getEventManager();
1140-
1141-
if (! $eventManager->hasListeners(Events::onTransactionRollBack)) {
1142-
return;
1143-
}
1144-
1145-
Deprecation::trigger(
1146-
'doctrine/dbal',
1147-
'https://github.com/doctrine/dbal/issues/5784',
1148-
'Subscribing to %s events is deprecated.',
1149-
Events::onTransactionRollBack,
1150-
);
1151-
1152-
$eventManager->dispatchEvent(Events::onTransactionRollBack, new TransactionRollBackEventArgs($this));
11531070
}
11541071

11551072
/**

src/Connections/PrimaryReadReplicaConnection.php

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,14 @@
44

55
namespace Doctrine\DBAL\Connections;
66

7-
use Doctrine\Common\EventManager;
87
use Doctrine\DBAL\Configuration;
98
use Doctrine\DBAL\Connection;
109
use Doctrine\DBAL\Driver;
1110
use Doctrine\DBAL\Driver\Connection as DriverConnection;
1211
use Doctrine\DBAL\Driver\Exception as DriverException;
1312
use Doctrine\DBAL\DriverManager;
14-
use Doctrine\DBAL\Event\ConnectionEventArgs;
15-
use Doctrine\DBAL\Events;
1613
use Doctrine\DBAL\Exception;
1714
use Doctrine\DBAL\Statement;
18-
use Doctrine\Deprecations\Deprecation;
1915
use InvalidArgumentException;
2016

2117
use function array_rand;
@@ -100,12 +96,8 @@ class PrimaryReadReplicaConnection extends Connection
10096
* @psalm-param Params $params
10197
* @phpstan-param array<string,mixed> $params
10298
*/
103-
public function __construct(
104-
array $params,
105-
Driver $driver,
106-
?Configuration $config = null,
107-
?EventManager $eventManager = null,
108-
) {
99+
public function __construct(array $params, Driver $driver, ?Configuration $config = null)
100+
{
109101
if (! isset($params['replica'], $params['primary'])) {
110102
throw new InvalidArgumentException('primary or replica configuration missing');
111103
}
@@ -124,7 +116,7 @@ public function __construct(
124116

125117
$this->keepReplica = ! empty($params['keepReplica']);
126118

127-
parent::__construct($params, $driver, $config, $eventManager);
119+
parent::__construct($params, $driver, $config);
128120
}
129121

130122
/**
@@ -191,18 +183,6 @@ protected function performConnect(?string $connectionName = null): DriverConnect
191183
$this->connections['replica'] = $this->_conn = $this->connectTo($connectionName);
192184
}
193185

194-
if ($this->_eventManager->hasListeners(Events::postConnect)) {
195-
Deprecation::trigger(
196-
'doctrine/dbal',
197-
'https://github.com/doctrine/dbal/issues/5784',
198-
'Subscribing to %s events is deprecated. Implement a middleware instead.',
199-
Events::postConnect,
200-
);
201-
202-
$eventArgs = new ConnectionEventArgs($this);
203-
$this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
204-
}
205-
206186
return $this->_conn;
207187
}
208188

src/DriverManager.php

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace Doctrine\DBAL;
66

7-
use Doctrine\Common\EventManager;
87
use Doctrine\DBAL\Driver\IBMDB2;
98
use Doctrine\DBAL\Driver\Mysqli;
109
use Doctrine\DBAL\Driver\OCI8;
@@ -133,8 +132,7 @@ private function __construct()
133132
* <b>driverClass</b>:
134133
* The driver class to use.
135134
*
136-
* @param Configuration|null $config The configuration to use.
137-
* @param EventManager|null $eventManager The event manager to use.
135+
* @param Configuration|null $config The configuration to use.
138136
* @psalm-param array{
139137
* charset?: string,
140138
* dbname?: string,
@@ -162,15 +160,10 @@ private function __construct()
162160
*
163161
* @template T of Connection
164162
*/
165-
public static function getConnection(
166-
array $params,
167-
?Configuration $config = null,
168-
?EventManager $eventManager = null,
169-
): Connection {
170-
// create default config and event manager, if not set
171-
$config ??= new Configuration();
172-
$eventManager ??= new EventManager();
173-
$params = self::parseDatabaseUrl($params);
163+
public static function getConnection(array $params, ?Configuration $config = null): Connection
164+
{
165+
$config ??= new Configuration();
166+
$params = self::parseDatabaseUrl($params);
174167

175168
// URL support for PrimaryReplicaConnection
176169
if (isset($params['primary'])) {
@@ -199,7 +192,7 @@ public static function getConnection(
199192
$wrapperClass = $params['wrapperClass'];
200193
}
201194

202-
return new $wrapperClass($params, $driver, $config, $eventManager);
195+
return new $wrapperClass($params, $driver, $config);
203196
}
204197

205198
/**

0 commit comments

Comments
 (0)