Bug #50810 [Ver->Csd]: property_exists does not work for private
Edit report at http://bugs.php.net/bug.php?id=50810&edit=1
ID: 50810
Updated by: felipe@php.net
Reported by: gaboto at gmail dot com
Summary: property_exists does not work for private
-Status: Verified
+Status: Closed
Type: Bug
Package: Scripting Engine problem
Operating System: *
PHP Version: 5.3, 6
Assigned To: felipe
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2010-03-07 01:49:35] felipe@php.net
Automatic comment from SVN on behalf of felipe
Revision: http://svn.php.net/viewvc/?view=revision&revision=295910
Log: - Fixed bug #50810 (property_exists does not work for private)
------------------------------------------------------------------------
[2010-01-21 10:06:17] jani@php.net
Using class name instead of object shows the expected result. I'd guess
(according to docs) it should be same in both ways though.
------------------------------------------------------------------------
[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/bug.php?id=50810&edit=1
Thread (5 messages)