Skip to content

Commit

Permalink
Merge 4df7699 into 3c3b736
Browse files Browse the repository at this point in the history
  • Loading branch information
aschempp committed Dec 6, 2015
2 parents 3c3b736 + 4df7699 commit 0019d96
Showing 1 changed file with 7 additions and 39 deletions.
46 changes: 7 additions & 39 deletions lib/Doctrine/ORM/Proxy/ProxyFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,45 +123,9 @@ protected function createProxyDefinition($className)
*/
private function createInitializer(ClassMetadata $classMetadata, EntityPersister $entityPersister)
{
if ($classMetadata->getReflectionClass()->hasMethod('__wakeup')) {
return function (BaseProxy $proxy) use ($entityPersister, $classMetadata) {
$initializer = $proxy->__getInitializer();
$cloner = $proxy->__getCloner();
$wakeupProxy = $classMetadata->getReflectionClass()->hasMethod('__wakeup');

$proxy->__setInitializer(null);
$proxy->__setCloner(null);

if ($proxy->__isInitialized()) {
return;
}

$properties = $proxy->__getLazyProperties();

foreach ($properties as $propertyName => $property) {
if ( ! isset($proxy->$propertyName)) {
$proxy->$propertyName = $properties[$propertyName];
}
}

$proxy->__setInitialized(true);
$proxy->__wakeup();

$identifier = $classMetadata->getIdentifierValues($proxy);

if (null === $entityPersister->loadById($identifier, $proxy)) {
$proxy->__setInitializer($initializer);
$proxy->__setCloner($cloner);
$proxy->__setInitialized(false);

throw EntityNotFoundException::fromClassNameAndIdentifier(
$classMetadata->getName(),
$this->identifierFlattener->flattenIdentifier($classMetadata, $identifier)
);
}
};
}

return function (BaseProxy $proxy) use ($entityPersister, $classMetadata) {
return function (BaseProxy $proxy) use ($entityPersister, $classMetadata, $wakeupProxy) {
$initializer = $proxy->__getInitializer();
$cloner = $proxy->__getCloner();

Expand All @@ -175,13 +139,17 @@ private function createInitializer(ClassMetadata $classMetadata, EntityPersister
$properties = $proxy->__getLazyProperties();

foreach ($properties as $propertyName => $property) {
if (!isset($proxy->$propertyName)) {
if ( ! isset($proxy->$propertyName)) {
$proxy->$propertyName = $properties[$propertyName];
}
}

$proxy->__setInitialized(true);

if ($wakeupProxy) {
$proxy->__wakeup();
}

$identifier = $classMetadata->getIdentifierValues($proxy);

if (null === $entityPersister->loadById($identifier, $proxy)) {
Expand Down

0 comments on commit 0019d96

Please sign in to comment.