Annotation of embedaddon/php/Zend/tests/bug33512.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #33512 (unset() overloaded properties doesn't work)
! 3: --FILE--
! 4: <?php
! 5: class TheObj {
! 6: public $RealVar1, $RealVar2, $RealVar3, $RealVar4;
! 7: public $Var = array();
! 8:
! 9: function __set($var, $val) {
! 10: $this->Var[$var] = $val;
! 11: }
! 12: function __get($var) {
! 13: if(isset($this->Var[$var])) return $this->Var[$var];
! 14: else return -1;
! 15: }
! 16: function __unset($var) {
! 17: unset($this->Var[$var]);
! 18: }
! 19: }
! 20:
! 21: $SomeObj = new TheObj;
! 22:
! 23: // this will fine
! 24: $SomeObj->RealVar1 = 'somevalue';
! 25: $SomeObj->{'RealVar2'} = 'othervalue';
! 26: $SomeObj->{'RealVar'.(3)} = 'othervaluetoo';
! 27: $SomeObj->{'RealVar'.'4'} = 'anothervalue';
! 28:
! 29: // this will fine too
! 30: $SomeObj->Virtual1 = 'somevalue';
! 31: $SomeObj->{'Virtual2'} = 'othervalue';
! 32:
! 33: // it's can't be used since this will encounter error
! 34: $SomeObj->{'Virtual'.(3)} = 'othervaluetoo';
! 35: $SomeObj->{'Virtual'.'4'} = 'anothervalue';
! 36:
! 37: // but this will fine, ofcourse
! 38: $SomeObj->Var['Virtual'.(3)] = 'othervaluetoo';
! 39: $SomeObj->Var['Virtual'.'4'] = 'anothervalue';
! 40:
! 41:
! 42: var_dump($SomeObj->RealVar1);
! 43: print $SomeObj->{'RealVar'.(3)}."\n";
! 44:
! 45: unset($SomeObj->RealVar1);
! 46: unset($SomeObj->{'RealVar'.(3)});
! 47:
! 48: //the lines below will catch by '__get' magic method since these variables are unavailable anymore
! 49: var_dump($SomeObj->RealVar1);
! 50: print $SomeObj->{'RealVar'.(3)}."\n";
! 51:
! 52: // now we will try to unset these variables
! 53: unset($SomeObj->Virtual1);
! 54: unset($SomeObj->{'Virtual'.(3)});
! 55:
! 56: //but, these variables are still available??? eventhough they're "unset"-ed
! 57: print $SomeObj->Virtual1."\n";
! 58: print $SomeObj->{'Virtual'.(3)}."\n";
! 59: ?>
! 60: --EXPECT--
! 61: string(9) "somevalue"
! 62: othervaluetoo
! 63: int(-1)
! 64: -1
! 65: -1
! 66: -1
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>