1--TEST-- 2unpack of template converter: multiple class/variable: class unpacker (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 $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$arySubObj = array( 63 "subdata" => "subdatadata", 64 "subpriv" => "subprivdata", 65 "subpdata" => null, 66); 67 68$aryMyObj = array( 69 "data" => "datadata", 70 "priv" => "privdata", 71 "pdata" => null, 72 "subary" => array($arySubObj), 73); 74 75$obj0 = new MyObj(); 76$obj0->pdata = "pubdata0"; 77$obj0->subary[0]->subpdata = "subpubdata00"; 78$subobj01 = new SubObj(); 79$subobj01->subpdata = "subpdata01"; 80$obj0->subary[1] = $subobj01; 81$obj1 = new MyObj(); 82$obj1->pdata = "pubdata1"; 83$obj1->subary[0]->subpdata = "subpubdata1"; 84$subobj11 = new SubObj(); 85$subobj11->subpdata = "subpdata11"; 86$obj1->subary[1] = $subobj11; 87 88$ary = array($obj0, $obj1); 89 90$tpl = array($aryMyObj); 91$resary = array($aryMyObj, $aryMyObj); 92$resary[0]["pdata"] = "pubdata0"; 93$resary[0]["subary"][] = $arySubObj; 94$resary[0]["subary"][0]["subpdata"] = "subpubdata00"; 95$resary[0]["subary"][1]["subpdata"] = "subpdata01"; 96$resary[1]["subary"][] = $arySubObj; 97$resary[1]["pdata"] = "pubdata1"; 98$resary[1]["subary"][0]["subpdata"] = "subpubdata1"; 99$resary[1]["subary"][1]["subpdata"] = "subpdata11"; 100 101test("recursive object list to associative array list", $ary, $tpl, $resary); 102 103--EXPECTF-- 104array(2) { 105 [0]=> 106 array(4) { 107 ["data"]=> 108 string(8) "datadata" 109 ["priv"]=> 110 string(8) "privdata" 111 ["pdata"]=> 112 string(8) "pubdata0" 113 ["subary"]=> 114 array(2) { 115 [0]=> 116 array(3) { 117 ["subdata"]=> 118 string(11) "subdatadata" 119 ["subpriv"]=> 120 string(11) "subprivdata" 121 ["subpdata"]=> 122 string(12) "subpubdata00" 123 } 124 [1]=> 125 array(3) { 126 ["subdata"]=> 127 string(11) "subdatadata" 128 ["subpriv"]=> 129 string(11) "subprivdata" 130 ["subpdata"]=> 131 string(10) "subpdata01" 132 } 133 } 134 } 135 [1]=> 136 array(4) { 137 ["data"]=> 138 string(8) "datadata" 139 ["priv"]=> 140 string(8) "privdata" 141 ["pdata"]=> 142 string(8) "pubdata1" 143 ["subary"]=> 144 array(2) { 145 [0]=> 146 array(3) { 147 ["subdata"]=> 148 string(11) "subdatadata" 149 ["subpriv"]=> 150 string(11) "subprivdata" 151 ["subpdata"]=> 152 string(11) "subpubdata1" 153 } 154 [1]=> 155 array(3) { 156 ["subdata"]=> 157 string(11) "subdatadata" 158 ["subpriv"]=> 159 string(11) "subprivdata" 160 ["subpdata"]=> 161 string(10) "subpdata11" 162 } 163 } 164 } 165} 166OK 167