--- /dev/null
+--TEST--
+Serialize and namespaces
+--FILE--
+<?php
+function autoload($fqcn) {
+ list($namespace, $class)= explode('::', $fqcn);
+ if ('power' == $namespace) {
+ eval('namespace '.$namespace.' { class '.$class.' {}}');
+ }
+}
+
+namespace Foo:Baz {
+ class Bar { }
+}
+
+class Baz { }
+
+echo "#### 1 ####\n";
+$bar= new Foo:Baz::Bar();
+var_dump($bar, serialize($bar), unserialize(serialize($bar)));
+
+echo "#### 2 ####\n";
+$baz= new Baz();
+var_dump(serialize($baz), unserialize(serialize($baz)));
+
+echo "#### 3 ####\n";
+var_dump(unserialize('O:7:"Binford":0:{}'));
+
+echo "#### 4 ####\n";
+ini_set('unserialize_callback_func', 'autoload');
+var_dump(unserialize('O:14:"Power::Binford":0:{}'));
+echo "#### 5 ####\n";
+var_dump(unserialize('O:14:"Idiot::Binford":0:{}'));
+?>
+--EXPECTF--
+#### 1 ####
+object(foo:baz::bar)#1 (0) {
+}
+string(14) "O:3:"bar":0:{}"
+object(__PHP_Incomplete_Class)#2 (1) {
+ ["__PHP_Incomplete_Class_Name"]=>
+ string(3) "bar"
+}
+#### 2 ####
+string(14) "O:3:"baz":0:{}"
+object(baz)#3 (0) {
+}
+#### 3 ####
+object(__PHP_Incomplete_Class)#3 (1) {
+ ["__PHP_Incomplete_Class_Name"]=>
+ string(7) "binford"
+}
+#### 4 ####
+object(power::binford)#3 (0) {
+}
+#### 5 ####
+
+Warning: unserialize(): Function autoload() hasn't defined the class it was called for in %s on line %d
+object(__PHP_Incomplete_Class)#3 (1) {
+ ["__PHP_Incomplete_Class_Name"]=>
+ string(14) "idiot::binford"
+}