1--TEST-- 2unpack of template converter: multiple class/variable: (array: string) 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$obj0 = new MyObj(); 60$obj0->pdata = "pubdata0"; 61$obj0->subary[0]->subpdata = "subpubdata00"; 62$subobj01 = new SubObj(); 63$subobj01->subpdata = "subpdata01"; 64$obj0->subary[1] = $subobj01; 65$obj1 = new MyObj(); 66$obj1->pdata = "pubdata1"; 67$obj1->subary[0]->subpdata = "subpubdata1"; 68$subobj11 = new SubObj(); 69$subobj11->subpdata = "subpdata11"; 70$obj1->subary[1] = $subobj11; 71 72$ary = array($obj0, $obj1); 73 74$tpl = array("MyObj"); 75 76test("recursive object list with object list /w string", $ary, $tpl, $ary); 77 78--EXPECTF-- 79array(2) { 80 [0]=> 81 object(MyObj)#%d (4) { 82 [%r"?data"?:("MyObj":)?private"?%r]=> 83 string(8) "datadata" 84 [%r"?priv"?:("MyObj":)?private"?%r]=> 85 string(8) "privdata" 86 ["pdata"]=> 87 string(8) "pubdata0" 88 ["subary"]=> 89 array(2) { 90 [0]=> 91 object(SubObj)#%d (3) { 92 [%r"?subdata"?:("SubObj":)?private"?%r]=> 93 string(11) "subdatadata" 94 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 95 string(11) "subprivdata" 96 ["subpdata"]=> 97 string(12) "subpubdata00" 98 } 99 [1]=> 100 object(SubObj)#%d (3) { 101 [%r"?subdata"?:("SubObj":)?private"?%r]=> 102 string(11) "subdatadata" 103 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 104 string(11) "subprivdata" 105 ["subpdata"]=> 106 string(10) "subpdata01" 107 } 108 } 109 } 110 [1]=> 111 object(MyObj)#%d (4) { 112 [%r"?data"?:("MyObj":)?private"?%r]=> 113 string(8) "datadata" 114 [%r"?priv"?:("MyObj":)?private"?%r]=> 115 string(8) "privdata" 116 ["pdata"]=> 117 string(8) "pubdata1" 118 ["subary"]=> 119 array(2) { 120 [0]=> 121 object(SubObj)#%d (3) { 122 [%r"?subdata"?:("SubObj":)?private"?%r]=> 123 string(11) "subdatadata" 124 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 125 string(11) "subprivdata" 126 ["subpdata"]=> 127 string(11) "subpubdata1" 128 } 129 [1]=> 130 object(SubObj)#%d (3) { 131 [%r"?subdata"?:("SubObj":)?private"?%r]=> 132 string(11) "subdatadata" 133 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 134 string(11) "subprivdata" 135 ["subpdata"]=> 136 string(10) "subpdata11" 137 } 138 } 139 } 140} 141OK 142