[php-src] Issue #9470: ReflectionMethod constructor should not find private parent method

From: Date: Fri, 02 Sep 2022 14:30:19 +0000
Subject: [php-src] Issue #9470: ReflectionMethod constructor should not find private parent method
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-242359@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/9470 Author: iluuu1994 ### Description Original issue: https://github.com/php/php-src/issues/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. 1. Private methods are accessible through child using ReflectionMethod: The following code: https://3v4l.org/Bso8B ```php <?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_

« previous php.bugs (#242359) next »