ID: 50810
Updated by: [email protected]
Reported By: gaboto at gmail dot com
-Status: Open
+Status: Verified
Bug Type: Scripting Engine problem
Operating System: *
-PHP Version: 5.*, 6
+PHP Version: 5.3, 6
New Comment:
Using class name instead of object shows the expected result. I'd guess
(according to docs) it should be same in both ways though.
Previous Comments:
------------------------------------------------------------------------
[2010-01-21 03:31:09] gaboto at gmail dot com
Another more complete example here:
<?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($example->propertyFooExists());
var_dump($example->propertyBarExists());
?>
In php 5.2.1 you get:
bool(true)
bool(true)
bool(false)
php bool 5.3:
bool(true)
bool(false)
bool(true)
expected result:
bool(true)
bool(true)
bool(true)
------------------------------------------------------------------------
[2010-01-20 23:17:54] gaboto at gmail dot com
I'm sorry, the example was wrong, this is the right example:
<?php
class ExampleSuperclass
{
private $foo;
function propertyExists()
{
return property_exists($this, 'foo');
}
}
class ExampleSubclass extends ExampleSuperclass
{
}
$example = new ExampleSubclass();
var_dump($example->propertyExists());
?>
------------------------------------------------------------------------
[2010-01-20 21:09:20] gaboto at gmail dot com
Description:
------------
property_exists does not work for private property defined in a
superclass.
Reproduce code:
---------------
<?php
class ExampleSuperclass
{
private $foo;
}
class ExampleSubclass extends ExampleSuperclass
{
function methodExists()
{
return method_exists($this, 'foo');
}
}
$example = new ExampleSubclass();
var_dump($example->methodExists());
?>
Expected result:
----------------
it must print bool(true)
Actual result:
--------------
it prints bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=50810&edit=1