From a8e6131e3bc883997b16133e65ee44ca9c59d8db Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Sun, 16 Oct 2011 17:00:33 +0200 Subject: [PATCH] Added the initializeObject method in the EntityManager --- lib/Doctrine/ORM/EntityManager.php | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index 04a30dc467c..d8deb058953 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -128,7 +128,7 @@ protected function __construct(Connection $conn, Configuration $config, EventMan $this->metadataFactory = new $metadataFactoryClassName; $this->metadataFactory->setEntityManager($this); $this->metadataFactory->setCacheDriver($this->config->getMetadataCacheImpl()); - + $this->unitOfWork = new UnitOfWork($this); $this->proxyFactory = new ProxyFactory($this, $config->getProxyDir(), @@ -203,18 +203,18 @@ public function beginTransaction() public function transactional(Closure $func) { $this->conn->beginTransaction(); - + try { $return = $func($this); - + $this->flush(); $this->conn->commit(); - + return $return ?: true; } catch (Exception $e) { $this->close(); $this->conn->rollback(); - + throw $e; } } @@ -244,7 +244,7 @@ public function rollback() * * The class name must be the fully-qualified class name without a leading backslash * (as it is returned by get_class($obj)) or an aliased class name. - * + * * Examples: * MyProject\Domain\User * sales:PriceRequest @@ -450,7 +450,7 @@ public function close() * * The entity will be entered into the database at or before transaction * commit or as a result of the flush operation. - * + * * NOTE: The persist operation always considers entities that are not yet known to * this EntityManager as NEW. Do not pass detached entities to the persist operation. * @@ -633,7 +633,7 @@ private function errorIfClosed() /** * Check if the Entity manager is open or closed. - * + * * @return bool */ public function isOpen() @@ -714,6 +714,18 @@ public function getProxyFactory() return $this->proxyFactory; } + /** + * Helper method to initialize a lazy loading proxy or persistent collection. + * + * This method is a no-op for other objects + * + * @param object $obj + */ + public function initializeObject($obj) + { + $this->unitOfWork->initializeObject($obj); + } + /** * Factory method to create EntityManager instances. *