1--TEST--
2ReflectionProperty::__construct(): ensure inherited private props can't be accessed through ReflectionProperty.
3--FILE--
4<?php
5
6class C {
7    private $p = 1;
8
9    static function testFromC() {
10        try {
11          $rp = new ReflectionProperty("D", "p");
12          var_dump($rp);
13        } catch (Exception $e) {
14            echo $e->getMessage();
15        }
16    }
17}
18
19class D extends C{
20    static function testFromD() {
21        try {
22          $rp = new ReflectionProperty("D", "p");
23          var_dump($rp);
24        } catch (Exception $e) {
25            echo $e->getMessage();
26        }
27    }
28}
29
30echo "--> Reflect inherited private from global scope:\n";
31try {
32  $rp = new ReflectionProperty("D", "p");
33  var_dump($rp);
34} catch (Exception $e) {
35    echo $e->getMessage();
36}
37
38echo "\n\n--> Reflect inherited private from declaring scope:\n";
39C::testFromC();
40
41echo "\n\n--> Reflect inherited private from declaring scope via subclass:\n";
42D::testFromC();
43
44echo "\n\n--> Reflect inherited private from subclass:\n";
45D::testFromD();
46?>
47--EXPECT--
48--> Reflect inherited private from global scope:
49Property D::$p does not exist
50
51--> Reflect inherited private from declaring scope:
52Property D::$p does not exist
53
54--> Reflect inherited private from declaring scope via subclass:
55Property D::$p does not exist
56
57--> Reflect inherited private from subclass:
58Property D::$p does not exist
59