1--TEST-- 2unpack of template converter: multiple class/variable: (array) 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 $serialized = msgpack_pack($variable); 20 $unserialized = msgpack_unpack($serialized, $object); 21 22 var_dump($unserialized); 23 if ($result) 24 { 25 echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL; 26 } 27 else 28 { 29 echo 'SKIP', PHP_EOL; 30 } 31} 32 33class MyObj 34{ 35 private $data = null; 36 private $priv = "privdata"; 37 public $pdata = null; 38 public $subary = null; 39 40 function __construct() 41 { 42 $this->data = "datadata"; 43 $this->subary = array(new SubObj()); 44 } 45} 46 47class SubObj 48{ 49 private $subdata = null; 50 private $subpriv = "subprivdata"; 51 public $subpdata = null; 52 53 function __construct() 54 { 55 $this->subdata = "subdatadata"; 56 } 57} 58 59$arySubObj = array( 60 "subdata" => "subdatadata", 61 "subpriv" => "subprivdata", 62 "subpdata" => null, 63); 64 65$aryMyObj = array( 66 "data" => "datadata", 67 "priv" => "privdata", 68 "pdata" => null, 69 "subary" => array($arySubObj), 70); 71 72$obj0 = new MyObj(); 73$obj0->pdata = "pubdata0"; 74$obj0->subary[0]->subpdata = "subpubdata00"; 75$subobj01 = new SubObj(); 76$subobj01->subpdata = "subpdata01"; 77$obj0->subary[1] = $subobj01; 78$obj1 = new MyObj(); 79$obj1->pdata = "pubdata1"; 80$obj1->subary[0]->subpdata = "subpubdata1"; 81$subobj11 = new SubObj(); 82$subobj11->subpdata = "subpdata11"; 83$obj1->subary[1] = $subobj11; 84 85$ary = array($obj0, $obj1); 86 87$tpl = array($aryMyObj); 88$resary = array($aryMyObj, $aryMyObj); 89$resary[0]["pdata"] = "pubdata0"; 90$resary[0]["subary"][] = $arySubObj; 91$resary[0]["subary"][0]["subpdata"] = "subpubdata00"; 92$resary[0]["subary"][1]["subpdata"] = "subpdata01"; 93$resary[1]["subary"][] = $arySubObj; 94$resary[1]["pdata"] = "pubdata1"; 95$resary[1]["subary"][0]["subpdata"] = "subpubdata1"; 96$resary[1]["subary"][1]["subpdata"] = "subpdata11"; 97 98test("recursive object list to associative array list", $ary, $tpl, $resary); 99 100--EXPECTF-- 101array(2) { 102 [0]=> 103 array(4) { 104 ["data"]=> 105 string(8) "datadata" 106 ["priv"]=> 107 string(8) "privdata" 108 ["pdata"]=> 109 string(8) "pubdata0" 110 ["subary"]=> 111 array(2) { 112 [0]=> 113 array(3) { 114 ["subdata"]=> 115 string(11) "subdatadata" 116 ["subpriv"]=> 117 string(11) "subprivdata" 118 ["subpdata"]=> 119 string(12) "subpubdata00" 120 } 121 [1]=> 122 array(3) { 123 ["subdata"]=> 124 string(11) "subdatadata" 125 ["subpriv"]=> 126 string(11) "subprivdata" 127 ["subpdata"]=> 128 string(10) "subpdata01" 129 } 130 } 131 } 132 [1]=> 133 array(4) { 134 ["data"]=> 135 string(8) "datadata" 136 ["priv"]=> 137 string(8) "privdata" 138 ["pdata"]=> 139 string(8) "pubdata1" 140 ["subary"]=> 141 array(2) { 142 [0]=> 143 array(3) { 144 ["subdata"]=> 145 string(11) "subdatadata" 146 ["subpriv"]=> 147 string(11) "subprivdata" 148 ["subpdata"]=> 149 string(11) "subpubdata1" 150 } 151 [1]=> 152 array(3) { 153 ["subdata"]=> 154 string(11) "subdatadata" 155 ["subpriv"]=> 156 string(11) "subprivdata" 157 ["subpdata"]=> 158 string(10) "subpdata11" 159 } 160 } 161 } 162} 163OK 164