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