1--TEST--
2Object test, cyclic references
3--SKIPIF--
4--FILE--
5<?php
6if(!extension_loaded('msgpack')) {
7    dl('msgpack.' . PHP_SHLIB_SUFFIX);
8}
9
10class Foo {
11    public $parent;
12    public $children;
13
14    public function __construct() {
15        $this->parent = null;
16        $this->children = array();
17    }
18
19    public function addChild(Foo $obj) {
20        $this->children[] = $obj;
21        $obj->setParent($this);
22    }
23
24    public function setParent(Foo $obj) {
25        $this->parent = $obj;
26    }
27}
28
29$obj1 = new Foo();
30
31for ($i = 0; $i < 10; $i++) {
32    $obj = new Foo();
33    $obj1->addChild($obj);
34}
35
36$o = msgpack_unserialize(msgpack_serialize($obj1->children));
37
38foreach ($obj1->children as $k => $v) {
39    $obj_v = $v;
40    $o_v = $o[$k];
41
42    echo gettype($obj_v), "  ", gettype($o_v), PHP_EOL;
43}
44?>
45--EXPECT--
46object  object
47object  object
48object  object
49object  object
50object  object
51object  object
52object  object
53object  object
54object  object
55object  object
56