Annotation of embedaddon/php/tests/classes/unset_properties.phpt, revision 1.1.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>