Revert "make hphpc able to use ini files"
[hiphop-php.git] / hphp / test / zend / bad / ext / standard / tests / serialize / 005.php
blob3176d61a31a91bd89b26f89c1ac317fd74139b9a
1 <?php
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";
17 switch($class_name)
19 case 'TestNAOld':
20 eval("class TestNAOld extends TestOld {}");
21 break;
22 case 'TestNANew':
23 eval("class TestNANew extends TestNew {}");
24 break;
25 case 'TestNANew2':
26 eval("class TestNANew2 extends TestNew {}");
27 break;
28 default:
29 echo "Try __autoload()\n";
30 if (!function_exists('__autoload'))
32 eval('function __autoload($class_name) { do_autoload($class_name); }');
34 __autoload($class_name);
35 break;
39 ini_set('unserialize_callback_func', 'unserializer');
41 class TestOld
43 function serialize()
45 echo __METHOD__ . "()\n";
48 function unserialize($serialized)
50 echo __METHOD__ . "()\n";
53 function __wakeup()
55 echo __METHOD__ . "()\n";
58 function __sleep()
60 echo __METHOD__ . "()\n";
61 return array();
65 class TestNew implements Serializable
67 protected static $check = 0;
69 function serialize()
71 echo __METHOD__ . "()\n";
72 switch(++self::$check)
74 case 1:
75 return NULL;
76 case 2:
77 return "2";
81 function unserialize($serialized)
83 echo __METHOD__ . "()\n";
86 function __wakeup()
88 echo __METHOD__ . "()\n";
91 function __sleep()
93 echo __METHOD__ . "()\n";
97 echo "===O1===\n";
98 var_dump($ser = serialize(new TestOld));
99 var_dump(unserialize($ser));
101 echo "===N1===\n";
102 var_dump($ser = serialize(new TestNew));
103 var_dump(unserialize($ser));
105 echo "===N2===\n";
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:{}'));
128 ===DONE===
129 <?php exit(0); ?>