6 protected $c = array(1, 2);
15 function __construct() {
17 $this->b
= acos(1.01);
19 echo "C has a safe constructor.\n";
22 echo "C wakes up safely.\n";
25 echo "C sleeps safely.\n";
26 return array('a', 'b', 'c');
30 class DangerousClass
{
31 public $danger = "DangerousString";
32 function __construct() {
33 echo "I have dangerous constructor.\n";
36 echo "I wake up dangerously.\n";
39 echo "I sleep dangerously.\n";
40 return array('danger');
45 public $dangerousClass;
46 function __construct() {
47 $this->dangerousClass
= new DangerousClass
;
51 class F
implements Serializable
{
52 public function serialize() {
53 return "SerializedData";
55 public function unserialize($serialized) {
56 echo "unserialize: $serialized\n";
61 class G
extends DangerousClass
{
64 function test_serialization($obj, $class_whitelist) {
65 $str = serialize($obj);
67 $new_obj = unserialize($str, $class_whitelist);
71 echo "========================\n";
75 test_serialization(new A
, []);
76 test_serialization(new B
, array('A', 'B'));
77 test_serialization(new C
, array('C'));
78 test_serialization(new DangerousClass
, array());
79 test_serialization(new E
, array('E'));
80 test_serialization(new F
, array('F'));
81 test_serialization(new G
, array('G'));
82 test_serialization(array("Hello World<>$%", acos(1.01), log(0), 50), array());
84 array( new A
, array(new B
, array(new C
, array(new E
, array(new F
))))),
85 array('abc' => 'A', 5 => 'C', 'E', 'B', 'F')