summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2004-10-02 14:22:52 +0000
committerMarcus Boerger <helly@php.net>2004-10-02 14:22:52 +0000
commit1e3aa55b1ebc8794474489cc41f5cd1ba7ed90c7 (patch)
treee685715f675fe7c1784a362e9610803fa0c26e04
parent6762c9f0e0bd291f9d6c84f448affe4e375719f1 (diff)
downloadphp-git-1e3aa55b1ebc8794474489cc41f5cd1ba7ed90c7.tar.gz
- Add new test
-rwxr-xr-xZend/tests/bug28444.phpt74
1 files changed, 74 insertions, 0 deletions
diff --git a/Zend/tests/bug28444.phpt b/Zend/tests/bug28444.phpt
new file mode 100755
index 0000000000..f8a5513e0b
--- /dev/null
+++ b/Zend/tests/bug28444.phpt
@@ -0,0 +1,74 @@
+--TEST--
+Bug #28444 (Cannot access undefined property for object with overloaded property access)
+--FILE--
+<?php
+
+class Object
+{
+ public $x;
+
+ function __construct($x)
+ {
+ $this->x = $x;
+ }
+}
+
+class Overloaded
+{
+ public $props = array();
+ public $x;
+
+ function __construct($x)
+ {
+ $this->x = new Object($x);
+ }
+
+ function __get($prop)
+ {
+ echo __METHOD__ . "($prop)\n";
+ return $this->props[$prop];
+ }
+
+ function __set($prop, $val)
+ {
+ echo __METHOD__ . "($prop,$val)\n";
+ $this->props[$prop] = $val;
+ }
+}
+$y = new Overloaded(2);
+var_dump($y->x);
+var_dump($y->x->x);
+var_dump($y->x->x = 3);
+var_dump($y->y = 3);
+var_dump($y->y);
+var_dump($y->z = new Object(4));
+var_dump($y->z->x);
+$t = $y->z;
+var_dump($t->x = 5);
+var_dump($y->z->x = 6);
+
+?>
+===DONE===
+--EXPECTF--
+object(Object)#%d (1) {
+ ["x"]=>
+ int(2)
+}
+int(2)
+int(3)
+Overloaded::__set(y,3)
+int(3)
+Overloaded::__get(y)
+int(3)
+Overloaded::__set(z,Object id #3)
+object(Object)#%d (1) {
+ ["x"]=>
+ int(4)
+}
+Overloaded::__get(z)
+int(4)
+Overloaded::__get(z)
+int(5)
+Overloaded::__get(z)
+int(6)
+===DONE===