Annotation of embedaddon/php/tests/classes/unset_properties.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Un-setting instance properties causes magic methods to be called when trying to access them from outside the magic
! 3: methods themselves.
! 4: --FILE--
! 5: <?php
! 6:
! 7: class Test
! 8: {
! 9: public $publicProperty = 'publicProperty set';
! 10:
! 11: protected $protectedProperty = 'protectedProperty set';
! 12:
! 13: private $privateProperty = 'privateProperty set';
! 14:
! 15: public function __get($name)
! 16: {
! 17: return '__get "' . $name . '"';
! 18: }
! 19:
! 20: public function __set($name, $value)
! 21: {
! 22: $this->$name = $value;
! 23: echo '__set "' . $name . '" to "' . $value . '"';
! 24: }
! 25:
! 26: public function __isset($name)
! 27: {
! 28: echo '__isset "' . $name . '"';
! 29: return isset($this->$name);
! 30: }
! 31:
! 32: public function getPublicProperty()
! 33: {
! 34: return $this->publicProperty;
! 35: }
! 36:
! 37: public function setPublicProperty($publicProperty)
! 38: {
! 39: $this->publicProperty = $publicProperty;
! 40: }
! 41:
! 42: public function unsetProtectedProperty()
! 43: {
! 44: unset($this->protectedProperty);
! 45: }
! 46:
! 47: public function getProtectedProperty()
! 48: {
! 49: return $this->protectedProperty;
! 50: }
! 51:
! 52: public function setProtectedProperty($protectedProperty)
! 53: {
! 54: $this->protectedProperty = $protectedProperty;
! 55: }
! 56:
! 57: public function unsetPrivateProperty()
! 58: {
! 59: unset($this->privateProperty);
! 60: }
! 61:
! 62: public function getPrivateProperty()
! 63: {
! 64: return $this->privateProperty;
! 65: }
! 66:
! 67: public function setPrivateProperty($privateProperty)
! 68: {
! 69: $this->privateProperty = $privateProperty;
! 70: }
! 71: }
! 72:
! 73: // verifying public property
! 74: $o = new Test;
! 75: echo $o->publicProperty;
! 76: echo "\n";
! 77: var_export(isset($o->publicProperty));
! 78: echo "\n";
! 79: unset($o->publicProperty);
! 80: isset($o->publicProperty);
! 81: echo "\n";
! 82: echo $o->publicProperty;
! 83: echo "\n";
! 84: echo $o->getPublicProperty();
! 85: echo "\n";
! 86: echo $o->setPublicProperty('new publicProperty value via setter');
! 87: echo "\n";
! 88: echo $o->publicProperty;
! 89: echo "\n";
! 90: unset($o->publicProperty);
! 91: $o->publicProperty = 'new publicProperty value via public access';
! 92: echo "\n";
! 93: var_export(isset($o->publicProperty));
! 94: echo "\n";
! 95: echo $o->publicProperty;
! 96: echo "\n\n";
! 97:
! 98: // verifying protected property
! 99: echo $o->getProtectedProperty();
! 100: echo "\n";
! 101: $o->unsetProtectedProperty();
! 102: var_export(isset($o->protectedProperty));
! 103: echo "\n";
! 104: echo $o->getProtectedProperty();
! 105: echo "\n";
! 106: echo $o->setProtectedProperty('new protectedProperty value via setter');
! 107: echo "\n";
! 108: var_export(isset($o->protectedProperty));
! 109: echo "\n";
! 110: echo $o->getProtectedProperty();
! 111: echo "\n\n";
! 112:
! 113: // verifying private property
! 114: echo $o->getPrivateProperty();
! 115: echo "\n";
! 116: $o->unsetPrivateProperty();
! 117: var_export(isset($o->privateProperty));
! 118: echo "\n";
! 119: echo $o->getPrivateProperty();
! 120: echo "\n";
! 121: echo $o->setPrivateProperty('new privateProperty value via setter');
! 122: echo "\n";
! 123: var_export(isset($o->privateProperty));
! 124: echo "\n";
! 125: echo $o->getPrivateProperty();
! 126: echo "\n\n";
! 127:
! 128: ?>
! 129:
! 130: --EXPECTF--
! 131: publicProperty set
! 132: true
! 133: __isset "publicProperty"
! 134: __get "publicProperty"
! 135: __get "publicProperty"
! 136: __set "publicProperty" to "new publicProperty value via setter"
! 137: new publicProperty value via setter
! 138: __set "publicProperty" to "new publicProperty value via public access"
! 139: true
! 140: new publicProperty value via public access
! 141:
! 142: protectedProperty set
! 143: __isset "protectedProperty"false
! 144: __get "protectedProperty"
! 145: __set "protectedProperty" to "new protectedProperty value via setter"
! 146: __isset "protectedProperty"true
! 147: new protectedProperty value via setter
! 148:
! 149: privateProperty set
! 150: __isset "privateProperty"false
! 151: __get "privateProperty"
! 152: __set "privateProperty" to "new privateProperty value via setter"
! 153: __isset "privateProperty"true
! 154: new privateProperty value via setter
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>