1--TEST-- 2unpack of template converter: multiple class/variable: class unpacker (array: object) 3--SKIPIF-- 4<?php 5if (version_compare(PHP_VERSION, '5.2.0') < 0) { 6 echo "skip tests in PHP 5.2 or newer"; 7} 8--FILE-- 9<?php 10if(!extension_loaded('msgpack')) 11{ 12 dl('msgpack.' . PHP_SHLIB_SUFFIX); 13} 14 15//error_reporting(0); 16 17function test($type, $variable, $object, $result = null) 18{ 19 $msgpack = new MessagePack(); 20 21 $serialized = $msgpack->pack($variable); 22 23 $unserialized = $msgpack->unpack($serialized, $object); 24 25 var_dump($unserialized); 26 if ($result) 27 { 28 echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL; 29 } 30 else 31 { 32 echo 'SKIP', PHP_EOL; 33 } 34} 35 36class MyObj 37{ 38 private $data = null; 39 private $priv = "privdata"; 40 public $pdata = null; 41 public $subary = null; 42 43 function __construct() 44 { 45 $this->data = "datadata"; 46 $this->subary = array(new SubObj()); 47 } 48} 49 50class SubObj 51{ 52 private $subdata = null; 53 private $subpriv = "subprivdata"; 54 public $subpdata = null; 55 56 function __construct() 57 { 58 $this->subdata = "subdatadata"; 59 } 60} 61 62$obj0 = new MyObj(); 63$obj0->pdata = "pubdata0"; 64$obj0->subary[0]->subpdata = "subpubdata00"; 65$subobj01 = new SubObj(); 66$subobj01->subpdata = "subpdata01"; 67$obj0->subary[1] = $subobj01; 68$obj1 = new MyObj(); 69$obj1->pdata = "pubdata1"; 70$obj1->subary[0]->subpdata = "subpubdata1"; 71$subobj11 = new SubObj(); 72$subobj11->subpdata = "subpdata11"; 73$obj1->subary[1] = $subobj11; 74 75$ary = array($obj0, $obj1); 76 77$tpl = array(new MyObj()); 78 79test("recursive object list with object list /w instance", $ary, $tpl, $ary); 80 81--EXPECTF-- 82array(2) { 83 [0]=> 84 object(MyObj)#%d (4) { 85 [%r"?data"?:("MyObj":)?private"?%r]=> 86 string(8) "datadata" 87 [%r"?priv"?:("MyObj":)?private"?%r]=> 88 string(8) "privdata" 89 ["pdata"]=> 90 string(8) "pubdata0" 91 ["subary"]=> 92 array(2) { 93 [0]=> 94 object(SubObj)#%d (3) { 95 [%r"?subdata"?:("SubObj":)?private"?%r]=> 96 string(11) "subdatadata" 97 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 98 string(11) "subprivdata" 99 ["subpdata"]=> 100 string(12) "subpubdata00" 101 } 102 [1]=> 103 object(SubObj)#%d (3) { 104 [%r"?subdata"?:("SubObj":)?private"?%r]=> 105 string(11) "subdatadata" 106 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 107 string(11) "subprivdata" 108 ["subpdata"]=> 109 string(10) "subpdata01" 110 } 111 } 112 } 113 [1]=> 114 object(MyObj)#%d (4) { 115 [%r"?data"?:("MyObj":)?private"?%r]=> 116 string(8) "datadata" 117 [%r"?priv"?:("MyObj":)?private"?%r]=> 118 string(8) "privdata" 119 ["pdata"]=> 120 string(8) "pubdata1" 121 ["subary"]=> 122 array(2) { 123 [0]=> 124 object(SubObj)#%d (3) { 125 [%r"?subdata"?:("SubObj":)?private"?%r]=> 126 string(11) "subdatadata" 127 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 128 string(11) "subprivdata" 129 ["subpdata"]=> 130 string(11) "subpubdata1" 131 } 132 [1]=> 133 object(SubObj)#%d (3) { 134 [%r"?subdata"?:("SubObj":)?private"?%r]=> 135 string(11) "subdatadata" 136 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 137 string(11) "subprivdata" 138 ["subpdata"]=> 139 string(10) "subpdata11" 140 } 141 } 142 } 143} 144OK 145