ID:               28699
 Updated by:       [EMAIL PROTECTED]
 Reported By:      D dot Kingma at jool dot nl
-Status:           Open
+Status:           Closed
 Bug Type:         Zend Engine 2 problem
 Operating System: Windows XP
 PHP Version:      5.0.0RC3
 New Comment:

This bug has been fixed in CVS.

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:
------------------------------------------------------------------------

[2004-06-10 13:10:18] D dot Kingma at jool dot nl

Also in RC3

------------------------------------------------------------------------

[2004-06-10 13:09:05] D dot Kingma at jool dot nl

reproduction code:

<?php
class testReflection{
        var $CAPS;
        var $lower;

}
//throws an exception, while it should not
$x=new reflectionProperty('testReflection','CAPS');
//works as expected
$y=new reflectionProperty('testReflection','lower');

/* Same for when you reference an object, instead of giving the name of
the class */
$test=new testReflection();
//throws an exception, while it should not
$x2=new reflectionProperty($test,'CAPS');
//works as expected
$y2=new reflectionProperty($test,'lower');
?>


Possible solution for the CAPS problem:

The properties hash table ce->properties_info probably keeps the
property names in the origanal string format (didn't change 

it with tolower()). So the fix will probably be to remove the
zend_str_tolower_copy (line 2729)

[zend_reflection_api.c]
2728    lcname = do_alloca(name_len + 1);
2729    zend_str_tolower_copy(lcname, name_str, name_len);
2730    if (zend_hash_find(&ce->properties_info, lcname, name_len + 1,
(void **) &property_info) == FAILURE) {
2731            free_alloca(lcname);
2732            zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, 
2733                    "Property %s::$%s does not exist", ce->name, name_str);
2734            return;
2735    }

------------------------------------------------------------------------

[2004-06-09 11:05:08] D dot Kingma at jool dot nl

changed category to 'Zend engine 2 problem'

------------------------------------------------------------------------

[2004-06-08 22:23:49] D dot Kingma at jool dot nl

There is also another small bug: When the comment above a method starts
with '/** ' (notice the space at the end) the getDocComments() function
will return an empty string. When you remove the trailing space, all
works fine.

And finally a small functionality request: please add the
getDocComments() function to the reflectionProperty class, since the
description of the var with the @var tag is also a well known
functionality of packages like javadoc/phpdoc and it would come in
handy if you cannot only get te description of methods, classes and
functions but also the defined properties of the class.

Thnx
David

------------------------------------------------------------------------

[2004-06-08 17:59:54] D dot Kingma at jool dot nl

Description:
------------
I came across a bug in the reflection api. When a class has a property
in capitals and you use the getProperties function from the
reflectionClass class all works fine, you get an array with
reflectionProperty object. But when you try to get the property
manually it fails, throwing an ReflectionException saying it is not a
property of that class (also when as a parameter tot the
reflectionproperty class i give the name attribute of the
reflectionproperty object given from the getProperties method).



------------------------------------------------------------------------


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

Reply via email to