summaryrefslogtreecommitdiff
path: root/ext/reflection/tests
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2008-10-29 12:56:29 +0000
committerFelipe Pena <felipe@php.net>2008-10-29 12:56:29 +0000
commitb9c03aa4a58820ac0c917ae247553d58e90672d9 (patch)
tree00978f8837135a0b1e2958e241b4d8cc229b5930 /ext/reflection/tests
parent101e472c66c7675c11ffceb8f007f0d5a00c4ab2 (diff)
downloadphp-git-b9c03aa4a58820ac0c917ae247553d58e90672d9.tar.gz
- MFH: Fixed bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property)
Diffstat (limited to 'ext/reflection/tests')
-rw-r--r--ext/reflection/tests/bug46064.phpt81
-rw-r--r--ext/reflection/tests/bug46064_2.phpt72
2 files changed, 153 insertions, 0 deletions
diff --git a/ext/reflection/tests/bug46064.phpt b/ext/reflection/tests/bug46064.phpt
new file mode 100644
index 0000000000..89c5af37d5
--- /dev/null
+++ b/ext/reflection/tests/bug46064.phpt
@@ -0,0 +1,81 @@
+--TEST--
+Bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property)
+--FILE--
+<?php
+
+class x {
+ public $zzz = 2;
+}
+
+$o = new x;
+$o->z = 1000;
+$o->zzz = 3;
+
+var_dump($h = new reflectionproperty($o, 'z'));
+var_dump($h->isDefault());
+var_dump($h->isPublic());
+var_dump($h->isStatic());
+var_dump($h->getName());
+var_dump(Reflection::getModifierNames($h->getModifiers()));
+var_dump($h->getValue($o));
+
+print "---------------------------\n";
+try {
+ var_dump(new reflectionproperty($o, 'zz'));
+} catch (Exception $e) {
+ var_dump($e->getMessage());
+}
+
+var_dump(new reflectionproperty($o, 'zzz'));
+
+class test {
+ protected $a = 1;
+}
+
+class bar extends test {
+ public function __construct() {
+ $this->foobar = 2;
+ $this->a = 200;
+
+ $p = new reflectionproperty($this, 'a');
+ $p->setAccessible(true);
+ var_dump($p->getValue($this), $p->isDefault(), $p->isPublic());
+
+ $p = new reflectionproperty($this, 'foobar');
+ var_dump($p->getValue($this), $p->isDefault(), $p->isPublic());
+ }
+}
+
+new bar;
+
+?>
+--EXPECTF--
+object(ReflectionProperty)#2 (2) {
+ ["name"]=>
+ string(1) "z"
+ ["class"]=>
+ string(1) "x"
+}
+bool(false)
+bool(true)
+bool(false)
+string(1) "z"
+array(1) {
+ [0]=>
+ string(6) "public"
+}
+int(1000)
+---------------------------
+string(30) "Property x::$zz does not exist"
+object(ReflectionProperty)#3 (2) {
+ ["name"]=>
+ string(3) "zzz"
+ ["class"]=>
+ string(1) "x"
+}
+int(200)
+bool(true)
+bool(false)
+int(2)
+bool(false)
+bool(true)
diff --git a/ext/reflection/tests/bug46064_2.phpt b/ext/reflection/tests/bug46064_2.phpt
new file mode 100644
index 0000000000..832d13c414
--- /dev/null
+++ b/ext/reflection/tests/bug46064_2.phpt
@@ -0,0 +1,72 @@
+--TEST--
+Bug #46064.2 (Exception when creating ReflectionProperty object on dynamicly created property)
+--FILE--
+<?php
+
+class foo {
+}
+
+$x = new foo;
+$x->test = 2000;
+
+
+$p = new ReflectionObject($x);
+var_dump($p->getProperty('test'));
+
+
+class bar {
+ public function __construct() {
+ $this->a = 1;
+ }
+}
+
+class test extends bar {
+ private $b = 2;
+
+ public function __construct() {
+ parent::__construct();
+
+ $p = new reflectionobject($this);
+ var_dump($h = $p->getProperty('a'));
+ var_dump($h->isDefault(), $h->isProtected(), $h->isPrivate(), $h->isPublic(), $h->isStatic());
+ var_dump($p->getProperties());
+ }
+}
+
+new test;
+
+?>
+--EXPECT--
+object(ReflectionProperty)#3 (2) {
+ ["name"]=>
+ string(4) "test"
+ ["class"]=>
+ string(3) "foo"
+}
+object(ReflectionProperty)#5 (2) {
+ ["name"]=>
+ string(1) "a"
+ ["class"]=>
+ string(4) "test"
+}
+bool(false)
+bool(false)
+bool(false)
+bool(true)
+bool(false)
+array(2) {
+ [0]=>
+ &object(ReflectionProperty)#6 (2) {
+ ["name"]=>
+ string(1) "b"
+ ["class"]=>
+ string(4) "test"
+ }
+ [1]=>
+ &object(ReflectionProperty)#7 (2) {
+ ["name"]=>
+ string(1) "a"
+ ["class"]=>
+ string(4) "test"
+ }
+}