Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4d6cef1

Browse files
committed
[DDC-2451] Fix entity listeners serialization
1 parent eb1a162 commit 4d6cef1

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,10 @@ public function __sleep()
831831
$serialized[] = 'lifecycleCallbacks';
832832
}
833833

834+
if ($this->entityListeners) {
835+
$serialized[] = 'entityListeners';
836+
}
837+
834838
if ($this->namedQueries) {
835839
$serialized[] = 'namedQueries';
836840
}

tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,23 @@ public function testRetrievalOfNamedNativeQueries()
714714
$this->assertEquals(1, count($cm->getNamedNativeQueries()));
715715
}
716716

717+
/**
718+
* @group DDC-2451
719+
*/
720+
public function testSerializeEntityListeners()
721+
{
722+
$metadata = new ClassMetadata('Doctrine\Tests\Models\Company\CompanyContract');
723+
724+
$metadata->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService);
725+
$metadata->addEntityListener(\Doctrine\ORM\Events::prePersist, 'CompanyContractListener', 'prePersistHandler');
726+
$metadata->addEntityListener(\Doctrine\ORM\Events::postPersist, 'CompanyContractListener', 'postPersistHandler');
727+
728+
$serialize = serialize($metadata);
729+
$unserialize = unserialize($serialize);
730+
731+
$this->assertEquals($unserialize->entityListeners, $metadata->entityListeners);
732+
}
733+
717734
/**
718735
* @expectedException \Doctrine\ORM\Mapping\MappingException
719736
* @expectedExceptionMessage Query named "userById" in "Doctrine\Tests\Models\CMS\CmsUser" was already declared, but it must be declared only once

0 commit comments

Comments
 (0)