xref: /PHP-8.1/ext/spl/tests/bug70730.phpt (revision c6357b80)
1--TEST--
2Bug #70730 (Incorrect ArrayObject serialization if unset is called in serialize())
3--FILE--
4<?php
5class A extends \ArrayObject
6{
7    protected $foo;
8
9    public function __construct()
10    {
11        $this->foo = 'bar';
12    }
13
14    public function serialize(): string
15    {
16        unset($this->foo);
17        $result = parent::serialize();
18        $this->foo = 'bar';
19        return $result;
20    }
21}
22
23$a = new A();
24$a->append('item1');
25$a->append('item2');
26$a->append('item3');
27$b = new A();
28$b->unserialize($a->serialize());
29var_dump($b);
30?>
31--EXPECTF--
32object(A)#%d (2) {
33  ["foo":protected]=>
34  string(3) "bar"
35  ["storage":"ArrayObject":private]=>
36  array(3) {
37    [0]=>
38    string(5) "item1"
39    [1]=>
40    string(5) "item2"
41    [2]=>
42    string(5) "item3"
43  }
44}
45