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