Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_011.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Object serialization / unserialization with inherited and hidden properties.
! 3: --FILE--
! 4: <?php
! 5: /* Prototype : proto string serialize(mixed variable)
! 6: * Description: Returns a string representation of variable (which can later be unserialized)
! 7: * Source code: ext/standard/var.c
! 8: * Alias to functions:
! 9: */
! 10: /* Prototype : proto mixed unserialize(string variable_representation)
! 11: * Description: Takes a string representation of variable and recreates it
! 12: * Source code: ext/standard/var.c
! 13: * Alias to functions:
! 14: */
! 15:
! 16: Class A {
! 17: private $APriv = "A.APriv";
! 18: protected $AProt = "A.AProt";
! 19: public $APub = "A.APub";
! 20:
! 21: function audit() {
! 22: return isset($this->APriv, $this->AProt, $this->APub);
! 23: }
! 24: }
! 25:
! 26: Class B extends A {
! 27: private $BPriv = "B.BPriv";
! 28: protected $BProt = "B.BProt";
! 29: public $BPub = "B.BPub";
! 30:
! 31: function audit() {
! 32: return parent::audit() && isset($this->AProt, $this->APub,
! 33: $this->BPriv, $this->BProt, $this->BPub);
! 34: }
! 35: }
! 36:
! 37: Class C extends B {
! 38: private $APriv = "C.APriv";
! 39: protected $AProt = "C.AProt";
! 40: public $APub = "C.APub";
! 41:
! 42: private $CPriv = "C.CPriv";
! 43: protected $CProt = "C.BProt";
! 44: public $CPub = "C.CPub";
! 45:
! 46: function audit() {
! 47: return parent::audit() && isset($this->APriv, $this->AProt, $this->APub,
! 48: $this->BProt, $this->BPub,
! 49: $this->CPriv, $this->CProt, $this->CPub);
! 50: }
! 51: }
! 52:
! 53: function prettyPrint($obj) {
! 54: echo "\n\nBefore serialization:\n";
! 55: var_dump($obj);
! 56:
! 57: echo "Serialized form:\n";
! 58: $ser = serialize($obj);
! 59: $serPrintable = str_replace("\0", '\0', $ser);
! 60: var_dump($serPrintable);
! 61:
! 62: echo "Unserialized:\n";
! 63: $uobj = unserialize($ser);
! 64: var_dump($uobj);
! 65:
! 66: echo "Sanity check: ";
! 67: var_dump($uobj->audit());
! 68: }
! 69:
! 70: echo "-- Test instance of A --\n";
! 71: prettyPrint(new A);
! 72: echo "\n\n-- Test instance of B --\n";
! 73: prettyPrint(new B);
! 74: echo "\n\n-- Test instance of C --\n";
! 75: prettyPrint(new C);
! 76:
! 77: echo "Done";
! 78: ?>
! 79: --EXPECTF--
! 80: -- Test instance of A --
! 81:
! 82:
! 83: Before serialization:
! 84: object(A)#%d (3) {
! 85: ["APriv":"A":private]=>
! 86: string(7) "A.APriv"
! 87: ["AProt":protected]=>
! 88: string(7) "A.AProt"
! 89: ["APub"]=>
! 90: string(6) "A.APub"
! 91: }
! 92: Serialized form:
! 93: string(98) "O:1:"A":3:{s:8:"\0A\0APriv";s:7:"A.APriv";s:8:"\0*\0AProt";s:7:"A.AProt";s:4:"APub";s:6:"A.APub";}"
! 94: Unserialized:
! 95: object(A)#%d (3) {
! 96: ["APriv":"A":private]=>
! 97: string(7) "A.APriv"
! 98: ["AProt":protected]=>
! 99: string(7) "A.AProt"
! 100: ["APub"]=>
! 101: string(6) "A.APub"
! 102: }
! 103: Sanity check: bool(true)
! 104:
! 105:
! 106: -- Test instance of B --
! 107:
! 108:
! 109: Before serialization:
! 110: object(B)#%d (6) {
! 111: ["BPriv":"B":private]=>
! 112: string(7) "B.BPriv"
! 113: ["BProt":protected]=>
! 114: string(7) "B.BProt"
! 115: ["BPub"]=>
! 116: string(6) "B.BPub"
! 117: ["APriv":"A":private]=>
! 118: string(7) "A.APriv"
! 119: ["AProt":protected]=>
! 120: string(7) "A.AProt"
! 121: ["APub"]=>
! 122: string(6) "A.APub"
! 123: }
! 124: Serialized form:
! 125: string(184) "O:1:"B":6:{s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";s:8:"\0A\0APriv";s:7:"A.APriv";s:8:"\0*\0AProt";s:7:"A.AProt";s:4:"APub";s:6:"A.APub";}"
! 126: Unserialized:
! 127: object(B)#%d (6) {
! 128: ["BPriv":"B":private]=>
! 129: string(7) "B.BPriv"
! 130: ["BProt":protected]=>
! 131: string(7) "B.BProt"
! 132: ["BPub"]=>
! 133: string(6) "B.BPub"
! 134: ["APriv":"A":private]=>
! 135: string(7) "A.APriv"
! 136: ["AProt":protected]=>
! 137: string(7) "A.AProt"
! 138: ["APub"]=>
! 139: string(6) "A.APub"
! 140: }
! 141: Sanity check: bool(true)
! 142:
! 143:
! 144: -- Test instance of C --
! 145:
! 146:
! 147: Before serialization:
! 148: object(C)#%d (10) {
! 149: ["APriv":"C":private]=>
! 150: string(7) "C.APriv"
! 151: ["AProt":protected]=>
! 152: string(7) "C.AProt"
! 153: ["APub"]=>
! 154: string(6) "C.APub"
! 155: ["CPriv":"C":private]=>
! 156: string(7) "C.CPriv"
! 157: ["CProt":protected]=>
! 158: string(7) "C.BProt"
! 159: ["CPub"]=>
! 160: string(6) "C.CPub"
! 161: ["BPriv":"B":private]=>
! 162: string(7) "B.BPriv"
! 163: ["BProt":protected]=>
! 164: string(7) "B.BProt"
! 165: ["BPub"]=>
! 166: string(6) "B.BPub"
! 167: ["APriv":"A":private]=>
! 168: string(7) "A.APriv"
! 169: }
! 170: Serialized form:
! 171: string(302) "O:1:"C":10:{s:8:"\0C\0APriv";s:7:"C.APriv";s:8:"\0*\0AProt";s:7:"C.AProt";s:4:"APub";s:6:"C.APub";s:8:"\0C\0CPriv";s:7:"C.CPriv";s:8:"\0*\0CProt";s:7:"C.BProt";s:4:"CPub";s:6:"C.CPub";s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";s:8:"\0A\0APriv";s:7:"A.APriv";}"
! 172: Unserialized:
! 173: object(C)#%d (10) {
! 174: ["APriv":"C":private]=>
! 175: string(7) "C.APriv"
! 176: ["AProt":protected]=>
! 177: string(7) "C.AProt"
! 178: ["APub"]=>
! 179: string(6) "C.APub"
! 180: ["CPriv":"C":private]=>
! 181: string(7) "C.CPriv"
! 182: ["CProt":protected]=>
! 183: string(7) "C.BProt"
! 184: ["CPub"]=>
! 185: string(6) "C.CPub"
! 186: ["BPriv":"B":private]=>
! 187: string(7) "B.BPriv"
! 188: ["BProt":protected]=>
! 189: string(7) "B.BProt"
! 190: ["BPub"]=>
! 191: string(6) "B.BPub"
! 192: ["APriv":"A":private]=>
! 193: string(7) "A.APriv"
! 194: }
! 195: Sanity check: bool(true)
! 196: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>