summaryrefslogtreecommitdiff
path: root/ext/reflection/tests/bug49719.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/tests/bug49719.phpt')
-rw-r--r--ext/reflection/tests/bug49719.phpt44
1 files changed, 44 insertions, 0 deletions
diff --git a/ext/reflection/tests/bug49719.phpt b/ext/reflection/tests/bug49719.phpt
new file mode 100644
index 000000000..215140a45
--- /dev/null
+++ b/ext/reflection/tests/bug49719.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Bug #49719 (ReflectionClass::hasProperty returns true for a private property in base class)
+--FILE--
+<?php
+
+class A {
+ private $a;
+}
+class B extends A {
+ private $b;
+}
+
+try {
+ $b = new B;
+ $ref = new ReflectionClass($b);
+
+ var_dump(property_exists('b', 'a'));
+ var_dump(property_exists($b, 'a'));
+ var_dump($ref->hasProperty('a'));
+ var_dump($ref->getProperty('a'));
+} catch (Exception $e) {
+ var_dump($e->getMessage());
+}
+
+class A2 {
+ private $a = 1;
+}
+
+class B2 extends A2 {
+ private $a = 2;
+}
+
+$b2 = new ReflectionClass('B2');
+$prop = $b2->getProperty('a');
+$prop->setAccessible(true);
+var_dump($prop->getValue(new b2));
+
+?>
+--EXPECTF--
+bool(false)
+bool(false)
+bool(false)
+%string|unicode%(25) "Property a does not exist"
+int(2)