1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
--TEST--
GH-10907 (Unable to serialize processed SplFixedArrays in PHP 8.2.4)
--FILE--
<?php
echo "Test without rebuilding properties\n";
$array = new SplFixedArray(2);
$array[0] = "test value 1";
$array[1] = "test value 2";
var_dump(serialize($array));
var_dump(unserialize(serialize($array)));
var_dump($array);
echo "=================\n";
echo "Test with rebuilding properties\n";
$array = new SplFixedArray(2);
$array[0] = "test value 1";
$array[1] = "test value 2";
var_dump($array); // Rebuilds properties
var_dump(serialize($array));
var_dump(unserialize(serialize($array)));
var_dump($array);
echo "=================\n";
echo "Test with partially rebuilding properties\n";
$array = new SplFixedArray(3);
$array[0] = "test value 1";
var_dump($array); // Rebuilds properties
$array[1] = "test value 2";
var_dump(serialize($array));
var_dump(unserialize(serialize($array)));
var_dump($array);
echo "=================\n";
echo "Test with adding members\n";
#[AllowDynamicProperties]
class MySplFixedArray extends SplFixedArray {
public string $my_string = "my_string_value";
}
$array = new MySplFixedArray(3);
$array->my_dynamic_property = "my_dynamic_property_value";
$array[0] = "test value 1";
$array[1] = "test value 2";
var_dump(serialize($array));
var_dump(unserialize(serialize($array)));
var_dump($array);
?>
--EXPECT--
Test without rebuilding properties
string(73) "O:13:"SplFixedArray":2:{i:0;s:12:"test value 1";i:1;s:12:"test value 2";}"
object(SplFixedArray)#2 (2) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
}
object(SplFixedArray)#1 (2) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
}
=================
Test with rebuilding properties
object(SplFixedArray)#2 (2) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
}
string(73) "O:13:"SplFixedArray":2:{i:0;s:12:"test value 1";i:1;s:12:"test value 2";}"
object(SplFixedArray)#1 (2) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
}
object(SplFixedArray)#2 (2) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
}
=================
Test with partially rebuilding properties
object(SplFixedArray)#1 (3) {
[0]=>
string(12) "test value 1"
[1]=>
NULL
[2]=>
NULL
}
string(79) "O:13:"SplFixedArray":3:{i:0;s:12:"test value 1";i:1;s:12:"test value 2";i:2;N;}"
object(SplFixedArray)#2 (3) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
[2]=>
NULL
}
object(SplFixedArray)#1 (3) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
[2]=>
NULL
}
=================
Test with adding members
string(180) "O:15:"MySplFixedArray":5:{i:0;s:12:"test value 1";i:1;s:12:"test value 2";i:2;N;s:9:"my_string";s:15:"my_string_value";s:19:"my_dynamic_property";s:25:"my_dynamic_property_value";}"
object(MySplFixedArray)#1 (5) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
[2]=>
NULL
["my_string"]=>
string(15) "my_string_value"
["my_dynamic_property"]=>
string(25) "my_dynamic_property_value"
}
object(MySplFixedArray)#2 (5) {
[0]=>
string(12) "test value 1"
[1]=>
string(12) "test value 2"
[2]=>
NULL
["my_string"]=>
string(15) "my_string_value"
["my_dynamic_property"]=>
string(25) "my_dynamic_property_value"
}
|