mirror of
https://github.com/php/php-src.git
synced 2024-12-13 20:05:26 +08:00
ca652aafa8
I'm going for a very conservative fix here, where the previous logic is restored for the case where an object is passed to method_exists(). We might want to check against EG(scope) instead, but this seems like a safer choice. This means that behavior in PHP 7.4 changes only for method_exists('C', 'privateMethodNotOnC'), which should be sensible.
47 lines
804 B
PHP
47 lines
804 B
PHP
--TEST--
|
|
Bug #50810 (property_exists does not work for private)
|
|
--FILE--
|
|
<?php
|
|
|
|
class ExampleSuperClass
|
|
{
|
|
private $foo;
|
|
static protected $bar;
|
|
|
|
private function foo()
|
|
{
|
|
}
|
|
|
|
public function propertyFooExists()
|
|
{
|
|
return property_exists($this, 'foo');
|
|
}
|
|
|
|
}
|
|
|
|
class ExampleSubClass extends ExampleSuperClass
|
|
{
|
|
public function methodExists()
|
|
{
|
|
return method_exists($this, 'foo');
|
|
}
|
|
|
|
public function propertyBarExists()
|
|
{
|
|
return property_exists($this, 'bar');
|
|
}
|
|
}
|
|
|
|
$example = new ExampleSubClass();
|
|
var_dump($example->methodExists());
|
|
var_dump(method_exists($example, 'propertyFooExists'));
|
|
var_dump($example->propertyFooExists());
|
|
var_dump($example->propertyBarExists());
|
|
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|