From 9b4c50e81ec03c34805b95e7d1cfafba500557ef Mon Sep 17 00:00:00 2001 From: Guilherme Blanco Date: Tue, 16 Feb 2016 05:03:11 +0000 Subject: [PATCH] Final work around entity changeset fix --- lib/Doctrine/ORM/UnitOfWork.php | 15 +++++++-------- tests/Doctrine/Tests/Mocks/UnitOfWorkMock.php | 17 ++++++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 914c81ea2..7d7da9754 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -515,15 +515,16 @@ class UnitOfWork implements PropertyChangedListener * * @return array */ - public function getEntityChangeSet($entity) + public function & getEntityChangeSet($entity) { - $oid = spl_object_hash($entity); + $oid = spl_object_hash($entity); + $data = array(); - if (isset($this->entityChangeSets[$oid])) { - return $this->entityChangeSets[$oid]; + if (!isset($this->entityChangeSets[$oid])) { + return $data; } - return array(); + return $this->entityChangeSets[$oid]; } /** @@ -1048,9 +1049,7 @@ class UnitOfWork implements PropertyChangedListener } if ($preUpdateInvoke != ListenersInvoker::INVOKE_NONE) { - $changeset = $this->getEntityChangeSet($entity); - - $this->listenersInvoker->invoke($class, Events::preUpdate, $entity, new PreUpdateEventArgs($entity, $this->em, $changeset), $preUpdateInvoke); + $this->listenersInvoker->invoke($class, Events::preUpdate, $entity, new PreUpdateEventArgs($entity, $this->em, $this->getEntityChangeSet($entity)), $preUpdateInvoke); $this->recomputeSingleEntityChangeSet($class, $entity); } diff --git a/tests/Doctrine/Tests/Mocks/UnitOfWorkMock.php b/tests/Doctrine/Tests/Mocks/UnitOfWorkMock.php index 49c063753..c846bca1c 100644 --- a/tests/Doctrine/Tests/Mocks/UnitOfWorkMock.php +++ b/tests/Doctrine/Tests/Mocks/UnitOfWorkMock.php @@ -22,18 +22,25 @@ class UnitOfWorkMock extends \Doctrine\ORM\UnitOfWork */ public function getEntityPersister($entityName) { - return isset($this->_persisterMock[$entityName]) ? - $this->_persisterMock[$entityName] : parent::getEntityPersister($entityName); + return isset($this->_persisterMock[$entityName]) + ? $this->_persisterMock[$entityName] + : parent::getEntityPersister($entityName); } /** * {@inheritdoc} */ - public function getEntityChangeSet($entity) + public function & getEntityChangeSet($entity) { $oid = spl_object_hash($entity); - return isset($this->_mockDataChangeSets[$oid]) ? - $this->_mockDataChangeSets[$oid] : parent::getEntityChangeSet($entity); + + if (isset($this->_mockDataChangeSets[$oid])) { + return $this->_mockDataChangeSets[$oid]; + } + + $data = parent::getEntityChangeSet($entity); + + return $data; } /* MOCK API */