diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:04:25 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:04:25 +0000 |
commit | 9269f5847784091c1174b576da998cf55027f3cf (patch) | |
tree | 5e61512768d68013352c9725dec8956e50c8e0d3 /Zend/tests/bug33512.phpt | |
parent | 3446a75a36964410413bd57f756120f1868fc463 (diff) | |
download | php-git-9269f5847784091c1174b576da998cf55027f3cf.tar.gz |
Added forgotten tests
Diffstat (limited to 'Zend/tests/bug33512.phpt')
-rwxr-xr-x | Zend/tests/bug33512.phpt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Zend/tests/bug33512.phpt b/Zend/tests/bug33512.phpt new file mode 100755 index 0000000000..9dd4e4e5f9 --- /dev/null +++ b/Zend/tests/bug33512.phpt @@ -0,0 +1,66 @@ +--TEST-- +Bug #33512 (unset() overloaded properties doesn't work) +--FILE-- +<?php +class TheObj { + public $RealVar1, $RealVar2, $RealVar3, $RealVar4; + public $Var = array(); + + function __set($var, $val) { + $this->Var[$var] = $val; + } + function __get($var) { + if(isset($this->Var[$var])) return $this->Var[$var]; + else return -1; + } + function __unset($var) { + unset($this->Var[$var]); + } + } + + $SomeObj = new TheObj; + + // this will fine + $SomeObj->RealVar1 = 'somevalue'; + $SomeObj->{'RealVar2'} = 'othervalue'; + $SomeObj->{'RealVar'.(3)} = 'othervaluetoo'; + $SomeObj->{'RealVar'.'4'} = 'anothervalue'; + + // this will fine too + $SomeObj->Virtual1 = 'somevalue'; + $SomeObj->{'Virtual2'} = 'othervalue'; + + // it's can't be used since this will encounter error + $SomeObj->{'Virtual'.(3)} = 'othervaluetoo'; + $SomeObj->{'Virtual'.'4'} = 'anothervalue'; + + // but this will fine, ofcourse + $SomeObj->Var['Virtual'.(3)] = 'othervaluetoo'; + $SomeObj->Var['Virtual'.'4'] = 'anothervalue'; + + + var_dump($SomeObj->RealVar1); + print $SomeObj->{'RealVar'.(3)}."\n"; + + unset($SomeObj->RealVar1); + unset($SomeObj->{'RealVar'.(3)}); + + //the lines below will catch by '__get' magic method since these variables are unavailable anymore + var_dump($SomeObj->RealVar1); + print $SomeObj->{'RealVar'.(3)}."\n"; + + // now we will try to unset these variables + unset($SomeObj->Virtual1); + unset($SomeObj->{'Virtual'.(3)}); + + //but, these variables are still available??? eventhough they're "unset"-ed + print $SomeObj->Virtual1."\n"; + print $SomeObj->{'Virtual'.(3)}."\n"; +?> +--EXPECT-- +string(9) "somevalue" +othervaluetoo +int(-1) +-1 +-1 +-1 |