[limb-svn] r7058 - in 3.x/trunk/limb/core: src tests/cases

svn at limb-project.com svn at limb-project.com
Fri Jun 6 15:00:32 MSD 2008


Author: pachanga
Date: 2008-06-06 15:00:29 +0400 (Fri, 06 Jun 2008)
New Revision: 7058
URL: http://fisheye.limb-project.com/changelog/limb/?cs=7058

Modified:
   3.x/trunk/limb/core/src/lmbSerializable.class.php
   3.x/trunk/limb/core/tests/cases/lmbSerializableTest.class.php
Log:
-- lmbSerializable throws exception for internal classes

Modified: 3.x/trunk/limb/core/src/lmbSerializable.class.php
===================================================================
--- 3.x/trunk/limb/core/src/lmbSerializable.class.php	2008-06-06 04:57:35 UTC (rev 7057)
+++ 3.x/trunk/limb/core/src/lmbSerializable.class.php	2008-06-06 11:00:29 UTC (rev 7058)
@@ -76,8 +76,9 @@
     foreach($classes as $class)
     {
       $reflect = new ReflectionClass($class);
-      if(!$reflect->isInternal())
-        $this->class_paths[] = $reflect->getFileName();
+      if($reflect->isInternal())
+        throw new lmbException("Class '$class' can't be serialized since it's an iternal PHP class, consider omitting object of this class by providing custom __sleep, __wakeup handlers");
+      $this->class_paths[] = $reflect->getFileName();
     }
   }
 

Modified: 3.x/trunk/limb/core/tests/cases/lmbSerializableTest.class.php
===================================================================
--- 3.x/trunk/limb/core/tests/cases/lmbSerializableTest.class.php	2008-06-06 04:57:35 UTC (rev 7057)
+++ 3.x/trunk/limb/core/tests/cases/lmbSerializableTest.class.php	2008-06-06 11:00:29 UTC (rev 7058)
@@ -60,18 +60,25 @@
     $this->assertEqual(lmbSerializable :: extractSerializedClasses($serialized), array('SerializableTestChildStub'));
   }
 
-  function testSerializeUnserializeInternalClass()
+  function testSerializingUnserializeInternalClassThrowsException()
   {
     if(!class_exists('StdObject'))
+    {
+      echo "Notice: Could not check internal class serializing \n";
       return;
+    }
 
     $obj = new StdObject;
     $obj->foo = "foo";
     $container = new lmbSerializable($obj);
 
-    $file = $this->_writeToFile(serialize($container));
-    $this->_phpSerializedObjectCall($file, '->foo', "foo");
-    unlink($file);
+    try
+    {
+      serialize($container);
+      $this->assertTrue(false);
+    }
+    catch(lmbException $e){}
+
   }
 
   function _writeToFile($serialized)



More information about the limb-svn mailing list