Closed
Description
Description
Original issue: #9409
Description
Related to #9405 and https://bugs.php.net/bug.php?id=64592
It might not be important, but I think this should be fixed at some point, so I've created a new issue. I can also provide PR if you want.
- Private methods are accessible through child using
ReflectionMethod
:
The following code: https://3v4l.org/Bso8B
<?php
class A
{
private $privateProperty = 1;
private function privateMethod() {}
}
class B extends A {}
try {
echo (string) new ReflectionMethod('B', 'privateMethod');
} catch(Throwable $e){
echo (string) $e;
}
try {
echo (string) new ReflectionProperty('B', 'privateProperty');
} catch(Throwable $e){
echo (string) $e;
}
Resulted in this output:
Method [ <user, inherits A> private method privateMethod ] {
@@ /in/Bso8B 6 - 6
}
ReflectionException: Property B::$privateProperty does not exist in /in/Bso8B:16
Stack trace:
#0 /in/Bso8B(16): ReflectionProperty->__construct('B', 'privateProperty')
#1 {main}
But I expected this output instead:
ReflectionException: Method B::privateMethod() does not exist in /in/Bso8B:11
Stack trace:
#0 /in/Bso8B(11): ReflectionMethod->__construct('B', 'privateMethod2')
#1 {main}ReflectionException: Property B::$privateProperty does not exist in /in/Bso8B:16
Stack trace:
#0 /in/Bso8B(16): ReflectionProperty->__construct('B', 'privateProperty')
#1 {main}
PHP Version
8.0 - 8.2
Operating System
No response