1--TEST-- 2unpack of template converter (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 $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 = 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$obj = new MyObj(); 60$obj->pdata = "pubdata"; 61$obj->subary->subpdata = "subpubdata"; 62 63$tpl = new MyObj(); 64 65test("recursive object /w instance", $obj, $tpl, $obj); 66 67--EXPECTF-- 68object(MyObj)#%d (4) { 69 [%r"?data"?:("MyObj":)?private"?%r]=> 70 string(8) "datadata" 71 [%r"?priv"?:("MyObj":)?private"?%r]=> 72 string(8) "privdata" 73 ["pdata"]=> 74 string(7) "pubdata" 75 ["subary"]=> 76 object(SubObj)#%d (3) { 77 [%r"?subdata"?:("SubObj":)?private"?%r]=> 78 string(11) "subdatadata" 79 [%r"?subpriv"?:("SubObj":)?private"?%r]=> 80 string(11) "subprivdata" 81 ["subpdata"]=> 82 string(10) "subpubdata" 83 } 84} 85OK 86