summaryrefslogtreecommitdiff
path: root/Zend/tests/bug33512.phpt
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-10-20 07:04:25 +0000
committerDmitry Stogov <dmitry@php.net>2005-10-20 07:04:25 +0000
commit9269f5847784091c1174b576da998cf55027f3cf (patch)
tree5e61512768d68013352c9725dec8956e50c8e0d3 /Zend/tests/bug33512.phpt
parent3446a75a36964410413bd57f756120f1868fc463 (diff)
downloadphp-git-9269f5847784091c1174b576da998cf55027f3cf.tar.gz
Added forgotten tests
Diffstat (limited to 'Zend/tests/bug33512.phpt')
-rwxr-xr-xZend/tests/bug33512.phpt66
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