Annotation of embedaddon/php/ext/spl/tests/arrayObject_magicMethods2.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: SPL: ArrayObject: ensure a wrapped object's magic methods for property access are not invoked when manipulating the ArrayObject's elements using ->.
! 3: --FILE--
! 4: <?php
! 5: class UsesMagic {
! 6: public $a = 1;
! 7: public $b = 2;
! 8: public $c = 3;
! 9:
! 10: private $priv = 'secret';
! 11:
! 12: function __get($name) {
! 13: $args = func_get_args();
! 14: echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n";
! 15: }
! 16: function __set($name, $value) {
! 17: $args = func_get_args();
! 18: echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n";
! 19: }
! 20: function __isset($name) {
! 21: $args = func_get_args();
! 22: echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n";
! 23: }
! 24: function __unset($name) {
! 25: $args = func_get_args();
! 26: echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n";
! 27: }
! 28:
! 29: }
! 30:
! 31: $obj = new UsesMagic;
! 32:
! 33: $ao = new ArrayObject($obj);
! 34: echo "\n--> Write existent, non-existent and dynamic:\n";
! 35: $ao->a = 'changed';
! 36: $ao->dynamic = 'new';
! 37: $ao->dynamic = 'new.changed';
! 38: echo " Original wrapped object:\n";
! 39: var_dump($obj);
! 40: echo " Wrapping ArrayObject:\n";
! 41: var_dump($ao);
! 42:
! 43: echo "\n--> Read existent, non-existent and dynamic:\n";
! 44: var_dump($ao->a);
! 45: var_dump($ao->nonexistent);
! 46: var_dump($ao->dynamic);
! 47: echo " Original wrapped object:\n";
! 48: var_dump($obj);
! 49: echo " Wrapping ArrayObject:\n";
! 50: var_dump($ao);
! 51:
! 52: echo "\n--> isset existent, non-existent and dynamic:\n";
! 53: var_dump(isset($ao->a));
! 54: var_dump(isset($ao->nonexistent));
! 55: var_dump(isset($ao->dynamic));
! 56: echo " Original wrapped object:\n";
! 57: var_dump($obj);
! 58: echo " Wrapping ArrayObject:\n";
! 59: var_dump($ao);
! 60:
! 61: echo "\n--> Unset existent, non-existent and dynamic:\n";
! 62: unset($ao->a);
! 63: unset($ao->nonexistent);
! 64: unset($ao->dynamic);
! 65: echo " Original wrapped object:\n";
! 66: var_dump($obj);
! 67: echo " Wrapping ArrayObject:\n";
! 68: var_dump($ao);
! 69: ?>
! 70: --EXPECTF--
! 71: --> Write existent, non-existent and dynamic:
! 72: Original wrapped object:
! 73: object(UsesMagic)#1 (4) {
! 74: ["a"]=>
! 75: int(1)
! 76: ["b"]=>
! 77: int(2)
! 78: ["c"]=>
! 79: int(3)
! 80: ["priv":"UsesMagic":private]=>
! 81: string(6) "secret"
! 82: }
! 83: Wrapping ArrayObject:
! 84: object(ArrayObject)#2 (3) {
! 85: ["a"]=>
! 86: string(7) "changed"
! 87: ["dynamic"]=>
! 88: string(11) "new.changed"
! 89: ["storage":"ArrayObject":private]=>
! 90: object(UsesMagic)#1 (4) {
! 91: ["a"]=>
! 92: int(1)
! 93: ["b"]=>
! 94: int(2)
! 95: ["c"]=>
! 96: int(3)
! 97: ["priv":"UsesMagic":private]=>
! 98: string(6) "secret"
! 99: }
! 100: }
! 101:
! 102: --> Read existent, non-existent and dynamic:
! 103: string(7) "changed"
! 104:
! 105: Notice: Undefined property: ArrayObject::$nonexistent in %s on line 42
! 106: NULL
! 107: string(11) "new.changed"
! 108: Original wrapped object:
! 109: object(UsesMagic)#1 (4) {
! 110: ["a"]=>
! 111: int(1)
! 112: ["b"]=>
! 113: int(2)
! 114: ["c"]=>
! 115: int(3)
! 116: ["priv":"UsesMagic":private]=>
! 117: string(6) "secret"
! 118: }
! 119: Wrapping ArrayObject:
! 120: object(ArrayObject)#2 (3) {
! 121: ["a"]=>
! 122: string(7) "changed"
! 123: ["dynamic"]=>
! 124: string(11) "new.changed"
! 125: ["storage":"ArrayObject":private]=>
! 126: object(UsesMagic)#1 (4) {
! 127: ["a"]=>
! 128: int(1)
! 129: ["b"]=>
! 130: int(2)
! 131: ["c"]=>
! 132: int(3)
! 133: ["priv":"UsesMagic":private]=>
! 134: string(6) "secret"
! 135: }
! 136: }
! 137:
! 138: --> isset existent, non-existent and dynamic:
! 139: bool(true)
! 140: bool(false)
! 141: bool(true)
! 142: Original wrapped object:
! 143: object(UsesMagic)#1 (4) {
! 144: ["a"]=>
! 145: int(1)
! 146: ["b"]=>
! 147: int(2)
! 148: ["c"]=>
! 149: int(3)
! 150: ["priv":"UsesMagic":private]=>
! 151: string(6) "secret"
! 152: }
! 153: Wrapping ArrayObject:
! 154: object(ArrayObject)#2 (3) {
! 155: ["a"]=>
! 156: string(7) "changed"
! 157: ["dynamic"]=>
! 158: string(11) "new.changed"
! 159: ["storage":"ArrayObject":private]=>
! 160: object(UsesMagic)#1 (4) {
! 161: ["a"]=>
! 162: int(1)
! 163: ["b"]=>
! 164: int(2)
! 165: ["c"]=>
! 166: int(3)
! 167: ["priv":"UsesMagic":private]=>
! 168: string(6) "secret"
! 169: }
! 170: }
! 171:
! 172: --> Unset existent, non-existent and dynamic:
! 173: Original wrapped object:
! 174: object(UsesMagic)#1 (4) {
! 175: ["a"]=>
! 176: int(1)
! 177: ["b"]=>
! 178: int(2)
! 179: ["c"]=>
! 180: int(3)
! 181: ["priv":"UsesMagic":private]=>
! 182: string(6) "secret"
! 183: }
! 184: Wrapping ArrayObject:
! 185: object(ArrayObject)#2 (1) {
! 186: ["storage":"ArrayObject":private]=>
! 187: object(UsesMagic)#1 (4) {
! 188: ["a"]=>
! 189: int(1)
! 190: ["b"]=>
! 191: int(2)
! 192: ["c"]=>
! 193: int(3)
! 194: ["priv":"UsesMagic":private]=>
! 195: string(6) "secret"
! 196: }
! 197: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>