1--TEST-- 2unpack of template converter: multiple class: 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 = new SubObj(); 47 } 48} 49 50class SubObj { 51 private $subdata = null; 52 private $subpriv = "subprivdata"; 53 public $subpdata = null; 54 55 function __construct() 56 { 57 $this->subdata = "subdatadata"; 58 } 59} 60 61$obj = new MyObj(); 62$obj->pdata = "pubdata"; 63$obj->subary->subpdata = "subpubdata"; 64 65$ary = array($obj); 66 67$tpl = array(new MyObj()); 68 69test("recursive object with object list /w instance", $ary, $tpl, $ary); 70 71--EXPECTF-- 72array(1) { 73 [0]=> 74 object(MyObj)#%d (4) { 75 [%r"?data"?:("MyObj":)?private"?%r]=> 76 string(8) "datadata" 77 [%r"?priv"?:("MyObj":)?private"?%r]=> 78 string(8) "privdata" 79 ["pdata"]=> 80 string(7) "pubdata" 81 ["subary"]=> 82 object(SubObj)#%d (3) { 83 [%r"?subdata"?:("SubObj":)?private"?%r]=> 84 string(11) "subdatadata" 85 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 86 string(11) "subprivdata" 87 ["subpdata"]=> 88 string(10) "subpubdata" 89 } 90 } 91} 92OK 93