Bug #55559 [Opn->Bgs]: ReflectionClass::getProperties() wrongly returns static properties
| From: | iliaa@php.net | Date: | Thu, 15 Sep 2011 15:54:34 +0000 |
| Subject: | Bug #55559 [Opn->Bgs]: ReflectionClass::getProperties() wrongly returns static properties | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-163572@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=55559&edit=1
ID: 55559
Updated by: iliaa@php.net
Reported by: info at strictcoding dot co dot uk
Summary: ReflectionClass::getProperties() wrongly returns
static properties
-Status: Open
+Status: Bogus
Type: Bug
Package: Reflection related
Operating System: Fedora 15
PHP Version: 5.3SVN-2011-08-31 (SVN)
Block user comment: N
Private report: N
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
The purpose would be to allow you to retrieve only the static properties, no bug
here.
Previous Comments:
------------------------------------------------------------------------
[2011-08-31 23:40:55] info at strictcoding dot co dot uk
I can see your point, however what would be the purpose of IS_STATIC then?
The whole point of the filter parameter, IMO, is to ask for a property which
either IS_PUBLIC, or IS_PUBLIC *and* IS_STATIC.
------------------------------------------------------------------------
[2011-08-31 22:28:57] johannes@php.net
A static property is also a public property. I can see where you are coming from but I'm not
sure I want to follow the logic. Maybe we'd need "negative" filters, while this makes
it quite complex so I'd then again prefer filtering it from the outside.
As then you really have all the freedom.
$non_private_properties = array_filter($r->getProperties(), function ($p) { return
!$p->isPublic(); });
------------------------------------------------------------------------
[2011-08-31 22:14:27] info at strictcoding dot co dot uk
Description:
------------
When used without ReflectionProperty::IS_STATIC, ReflectionClass::getProperties()
still returns static properties.
Test script:
---------------
class A {
public static $x;
}
$r = new ReflectionClass('A');
print_r($r->getProperties(ReflectionProperty::IS_PUBLIC));
Expected result:
----------------
Array
(
)
Actual result:
--------------
Array
(
[0] => ReflectionProperty Object
(
[name] => x
[class] => A
)
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=55559&edit=1