From 375c470e937e857608d9200c26e015c877ba7f50 Mon Sep 17 00:00:00 2001 From: beberlei Date: Wed, 6 Jan 2010 14:12:27 +0000 Subject: [PATCH] DDC-155 - Skip __sleep in generateMethods --- lib/Doctrine/ORM/Proxy/ProxyFactory.php | 3 ++- .../ORM/Proxy/ProxyClassGeneratorTest.php | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Proxy/ProxyFactory.php b/lib/Doctrine/ORM/Proxy/ProxyFactory.php index b9e53d611..2ef9d8af4 100644 --- a/lib/Doctrine/ORM/Proxy/ProxyFactory.php +++ b/lib/Doctrine/ORM/Proxy/ProxyFactory.php @@ -165,7 +165,8 @@ class ProxyFactory $methods = ''; foreach ($class->reflClass->getMethods() as $method) { - if ($method->isConstructor()) { + /* @var $method ReflectionMethod */ + if ($method->isConstructor() || strtolower($method->getName()) == "__sleep") { continue; } diff --git a/tests/Doctrine/Tests/ORM/Proxy/ProxyClassGeneratorTest.php b/tests/Doctrine/Tests/ORM/Proxy/ProxyClassGeneratorTest.php index bef18a0c3..10789c3fc 100644 --- a/tests/Doctrine/Tests/ORM/Proxy/ProxyClassGeneratorTest.php +++ b/tests/Doctrine/Tests/ORM/Proxy/ProxyClassGeneratorTest.php @@ -124,6 +124,21 @@ class ProxyClassGeneratorTest extends \Doctrine\Tests\OrmTestCase $this->assertNotContains("class DoctrineOrmTestEntityProxy extends \\\\DoctrineOrmTestEntity", $classCode); $this->assertContains("class DoctrineOrmTestEntityProxy extends \\DoctrineOrmTestEntity", $classCode); } + + public function testClassWithSleepProxyGeneration() + { + $className = "\Doctrine\Tests\ORM\Proxy\SleepClass"; + $proxyName = "DoctrineTestsORMProxySleepClassProxy"; + $classMetadata = new \Doctrine\ORM\Mapping\ClassMetadata($className); + $classMetadata->mapField(array('fieldName' => 'id', 'type' => 'integer')); + $classMetadata->setIdentifier(array('id')); + + $this->_proxyFactory->generateProxyClasses(array($classMetadata)); + + $classCode = file_get_contents(dirname(__FILE__)."/generated/".$proxyName.".php"); + + $this->assertEquals(1, substr_count($classCode, 'function __sleep')); + } protected function _getMockPersister() { @@ -131,3 +146,13 @@ class ProxyClassGeneratorTest extends \Doctrine\Tests\OrmTestCase return $persister; } } + +class SleepClass +{ + public $id; + + public function __sleep() + { + return array('id'); + } +} \ No newline at end of file