From 741da7806c5d01796e243de9a122590151cb0c90 Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Wed, 8 Jun 2016 10:29:39 +0300 Subject: [PATCH 1/5] change switch/case to if/else --- lib/Doctrine/ORM/EntityManager.php | 44 ++++++++++++++---------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index d66f454e7..a38ebecbf 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -22,6 +22,7 @@ namespace Doctrine\ORM; use Exception; use Doctrine\Common\EventManager; use Doctrine\DBAL\Connection; +use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\LockMode; use Doctrine\ORM\Query\ResultSetMapping; use Doctrine\ORM\Proxy\ProxyFactory; @@ -420,14 +421,14 @@ use Doctrine\Common\Util\ClassUtils; return null; } - switch (true) { - case LockMode::OPTIMISTIC === $lockMode: + switch ($lockMode) { + case LockMode::OPTIMISTIC: $this->lock($entity, $lockMode, $lockVersion); break; - case LockMode::NONE === $lockMode: - case LockMode::PESSIMISTIC_READ === $lockMode: - case LockMode::PESSIMISTIC_WRITE === $lockMode: + case LockMode::NONE: + case LockMode::PESSIMISTIC_READ: + case LockMode::PESSIMISTIC_WRITE: $persister = $unitOfWork->getEntityPersister($class->name); $persister->refresh($sortedId, $entity, $lockMode); break; @@ -438,8 +439,8 @@ use Doctrine\Common\Util\ClassUtils; $persister = $unitOfWork->getEntityPersister($class->name); - switch (true) { - case LockMode::OPTIMISTIC === $lockMode: + switch ($lockMode) { + case LockMode::OPTIMISTIC: if ( ! $class->isVersioned) { throw OptimisticLockException::notVersioned($class->name); } @@ -450,8 +451,8 @@ use Doctrine\Common\Util\ClassUtils; return $entity; - case LockMode::PESSIMISTIC_READ === $lockMode: - case LockMode::PESSIMISTIC_WRITE === $lockMode: + case LockMode::PESSIMISTIC_READ: + case LockMode::PESSIMISTIC_WRITE: if ( ! $this->getConnection()->isTransactionActive()) { throw TransactionRequiredException::transactionRequired(); } @@ -835,21 +836,16 @@ use Doctrine\Common\Util\ClassUtils; throw ORMException::missingMappingDriverImpl(); } - switch (true) { - case (is_array($conn)): - $conn = \Doctrine\DBAL\DriverManager::getConnection( - $conn, $config, ($eventManager ?: new EventManager()) - ); - break; - - case ($conn instanceof Connection): - if ($eventManager !== null && $conn->getEventManager() !== $eventManager) { - throw ORMException::mismatchedEventManager(); - } - break; - - default: - throw new \InvalidArgumentException("Invalid argument: " . $conn); + if (is_array($conn)) { + $conn = DriverManager::getConnection( + $conn, $config, ($eventManager ?: new EventManager()) + ); + } elseif ($conn instanceof Connection) { + if ($eventManager !== null && $conn->getEventManager() !== $eventManager) { + throw ORMException::mismatchedEventManager(); + } + } else { + throw new \InvalidArgumentException("Invalid argument: " . $conn); } return new EntityManager($conn, $config, $conn->getEventManager()); From fadd0a338fa4b2a680b6edefafc7c6b9f3240017 Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Wed, 8 Jun 2016 10:58:44 +0300 Subject: [PATCH 2/5] add createConnection static method --- lib/Doctrine/ORM/EntityManager.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index a38ebecbf..ba882df80 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -836,19 +836,38 @@ use Doctrine\Common\Util\ClassUtils; throw ORMException::missingMappingDriverImpl(); } + $conn = static::createConnection($conn, $config, $eventManager); + + return new EntityManager($conn, $config, $conn->getEventManager()); + } + + /** + * Factory method to create Connection instances. + * + * @param mixed $conn An array with the connection parameters or an existing Connection instance. + * @param Configuration $config The Configuration instance to use. + * @param EventManager $eventManager The EventManager instance to use. + * + * @return Connection + * + * @throws ORMException + * @throws \Doctrine\DBAL\DBALException + */ + protected static function createConnection($conn, Configuration $config, EventManager $eventManager = null) + { if (is_array($conn)) { $conn = DriverManager::getConnection( $conn, $config, ($eventManager ?: new EventManager()) ); } elseif ($conn instanceof Connection) { if ($eventManager !== null && $conn->getEventManager() !== $eventManager) { - throw ORMException::mismatchedEventManager(); + throw ORMException::mismatchedEventManager(); } } else { throw new \InvalidArgumentException("Invalid argument: " . $conn); } - return new EntityManager($conn, $config, $conn->getEventManager()); + return $conn; } /** From 0b5b7190d73b5e030df99aab961d7938342917a5 Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Wed, 8 Jun 2016 11:29:43 +0300 Subject: [PATCH 3/5] not check EventManager --- lib/Doctrine/ORM/EntityManager.php | 23 +++++++++-------------- lib/Doctrine/ORM/ORMException.php | 8 -------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index ba882df80..cadd0e014 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -821,9 +821,9 @@ use Doctrine\Common\Util\ClassUtils; /** * Factory method to create EntityManager instances. * - * @param mixed $conn An array with the connection parameters or an existing Connection instance. - * @param Configuration $config The Configuration instance to use. - * @param EventManager $eventManager The EventManager instance to use. + * @param array|Connection $conn An array with the connection parameters or an existing Connection instance. + * @param Configuration $config The Configuration instance to use. + * @param EventManager $eventManager The EventManager instance to use. * * @return EntityManager The created EntityManager. * @@ -844,26 +844,21 @@ use Doctrine\Common\Util\ClassUtils; /** * Factory method to create Connection instances. * - * @param mixed $conn An array with the connection parameters or an existing Connection instance. - * @param Configuration $config The Configuration instance to use. - * @param EventManager $eventManager The EventManager instance to use. + * @param array|Connection $conn An array with the connection parameters or an existing Connection instance. + * @param Configuration $config The Configuration instance to use. + * @param EventManager $eventManager The EventManager instance to use. * * @return Connection * - * @throws ORMException - * @throws \Doctrine\DBAL\DBALException + * @throws \InvalidArgumentException */ protected static function createConnection($conn, Configuration $config, EventManager $eventManager = null) { if (is_array($conn)) { - $conn = DriverManager::getConnection( + return DriverManager::getConnection( $conn, $config, ($eventManager ?: new EventManager()) ); - } elseif ($conn instanceof Connection) { - if ($eventManager !== null && $conn->getEventManager() !== $eventManager) { - throw ORMException::mismatchedEventManager(); - } - } else { + } elseif ( ! $conn instanceof Connection) { throw new \InvalidArgumentException("Invalid argument: " . $conn); } diff --git a/lib/Doctrine/ORM/ORMException.php b/lib/Doctrine/ORM/ORMException.php index 6d8a6d631..286eb26e8 100644 --- a/lib/Doctrine/ORM/ORMException.php +++ b/lib/Doctrine/ORM/ORMException.php @@ -154,14 +154,6 @@ class ORMException extends Exception return new self("'$mode' is an invalid hydration mode."); } - /** - * @return ORMException - */ - public static function mismatchedEventManager() - { - return new self("Cannot use different EventManager instances for EntityManager and Connection."); - } - /** * @param string $methodName * From c0a87597fabf6dc0530e1ddde3b0203175e5687f Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Wed, 8 Jun 2016 11:47:09 +0300 Subject: [PATCH 4/5] correct code style --- lib/Doctrine/ORM/EntityManager.php | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index cadd0e014..97aab4f81 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -821,7 +821,7 @@ use Doctrine\Common\Util\ClassUtils; /** * Factory method to create EntityManager instances. * - * @param array|Connection $conn An array with the connection parameters or an existing Connection instance. + * @param array|Connection $connection An array with the connection parameters or an existing Connection instance. * @param Configuration $config The Configuration instance to use. * @param EventManager $eventManager The EventManager instance to use. * @@ -830,21 +830,21 @@ use Doctrine\Common\Util\ClassUtils; * @throws \InvalidArgumentException * @throws ORMException */ - public static function create($conn, Configuration $config, EventManager $eventManager = null) + public static function create($connection, Configuration $config, EventManager $eventManager = null) { if ( ! $config->getMetadataDriverImpl()) { throw ORMException::missingMappingDriverImpl(); } - $conn = static::createConnection($conn, $config, $eventManager); + $connection = static::createConnection($connection, $config, $eventManager); - return new EntityManager($conn, $config, $conn->getEventManager()); + return new EntityManager($connection, $config, $connection->getEventManager()); } /** * Factory method to create Connection instances. * - * @param array|Connection $conn An array with the connection parameters or an existing Connection instance. + * @param array|Connection $connection An array with the connection parameters or an existing Connection instance. * @param Configuration $config The Configuration instance to use. * @param EventManager $eventManager The EventManager instance to use. * @@ -852,17 +852,17 @@ use Doctrine\Common\Util\ClassUtils; * * @throws \InvalidArgumentException */ - protected static function createConnection($conn, Configuration $config, EventManager $eventManager = null) + protected static function createConnection($connection, Configuration $config, EventManager $eventManager = null) { - if (is_array($conn)) { - return DriverManager::getConnection( - $conn, $config, ($eventManager ?: new EventManager()) - ); - } elseif ( ! $conn instanceof Connection) { - throw new \InvalidArgumentException("Invalid argument: " . $conn); + if (is_array($connection)) { + return DriverManager::getConnection($connection, $config, $eventManager ?: new EventManager()); } - return $conn; + if ( ! $connection instanceof Connection) { + throw new \InvalidArgumentException("Invalid argument: " . $connection); + } + + return $connection; } /** From fa7799cec155b501e610ff0f941cf9eb4053cce5 Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Wed, 8 Jun 2016 12:24:41 +0300 Subject: [PATCH 5/5] return check EventManager --- lib/Doctrine/ORM/EntityManager.php | 5 +++++ lib/Doctrine/ORM/ORMException.php | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index 97aab4f81..c889f90c2 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -851,6 +851,7 @@ use Doctrine\Common\Util\ClassUtils; * @return Connection * * @throws \InvalidArgumentException + * @throws ORMException */ protected static function createConnection($connection, Configuration $config, EventManager $eventManager = null) { @@ -862,6 +863,10 @@ use Doctrine\Common\Util\ClassUtils; throw new \InvalidArgumentException("Invalid argument: " . $connection); } + if ($eventManager !== null && $connection->getEventManager() !== $eventManager) { + throw ORMException::mismatchedEventManager(); + } + return $connection; } diff --git a/lib/Doctrine/ORM/ORMException.php b/lib/Doctrine/ORM/ORMException.php index 286eb26e8..6d8a6d631 100644 --- a/lib/Doctrine/ORM/ORMException.php +++ b/lib/Doctrine/ORM/ORMException.php @@ -154,6 +154,14 @@ class ORMException extends Exception return new self("'$mode' is an invalid hydration mode."); } + /** + * @return ORMException + */ + public static function mismatchedEventManager() + { + return new self("Cannot use different EventManager instances for EntityManager and Connection."); + } + /** * @param string $methodName *