Edit report at http://bugs.php.net/bug.php?id=50810&edit=1

 ID:               50810
 Updated by:       [email protected]
 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] [email protected]

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] [email protected]

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

Reply via email to