3 // This test verifies that old and new style (un)serializing do not interfere.
5 function do_autoload($class_name)
7 if ($class_name != 'autoload_not_available')
9 require_once(dirname(__FILE__
) . '/' . strtolower($class_name) . '.p5c');
11 echo __FUNCTION__
. "($class_name)\n";
14 function unserializer($class_name)
16 echo __METHOD__
. "($class_name)\n";
20 eval("class TestNAOld extends TestOld {}");
23 eval("class TestNANew extends TestNew {}");
26 eval("class TestNANew2 extends TestNew {}");
29 echo "Try __autoload()\n";
30 if (!function_exists('__autoload'))
32 eval('function __autoload($class_name) { do_autoload($class_name); }');
34 __autoload($class_name);
39 ini_set('unserialize_callback_func', 'unserializer');
45 echo __METHOD__
. "()\n";
48 function unserialize($serialized)
50 echo __METHOD__
. "()\n";
55 echo __METHOD__
. "()\n";
60 echo __METHOD__
. "()\n";
65 class TestNew
implements Serializable
67 protected static $check = 0;
71 echo __METHOD__
. "()\n";
72 switch(++self
::$check)
81 function unserialize($serialized)
83 echo __METHOD__
. "()\n";
88 echo __METHOD__
. "()\n";
93 echo __METHOD__
. "()\n";
98 var_dump($ser = serialize(new TestOld
));
99 var_dump(unserialize($ser));
102 var_dump($ser = serialize(new TestNew
));
103 var_dump(unserialize($ser));
106 var_dump($ser = serialize(new TestNew
));
107 var_dump(unserialize($ser));
109 echo "===NAOld===\n";
110 var_dump(unserialize('O:9:"TestNAOld":0:{}'));
112 echo "===NANew===\n";
113 var_dump(unserialize('O:9:"TestNANew":0:{}'));
115 echo "===NANew2===\n";
116 var_dump(unserialize('C:10:"TestNANew2":0:{}'));
118 echo "===AutoOld===\n";
119 var_dump(unserialize('O:19:"autoload_implements":0:{}'));
121 // Now we have __autoload(), that will be called before the old style header.
122 // If the old style handler also fails to register the class then the object
123 // becomes an incomplete class instance.
125 echo "===AutoNA===\n";
126 var_dump(unserialize('O:22:"autoload_not_available":0:{}'));