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

 ID:                 53172
 Updated by:         cataphr...@php.net
 Reported by:        cataphr...@php.net
 Summary:            ZEND_ACC_IMPLICIT_PUBLIC should be removed or used
                     in zend_get_property_info
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 PHP Version:        5.3SVN-2010-10-26 (SVN)
 Block user comment: N

 New Comment:

I recall the last paragraph, zend_get_property_info is not an
alternative for reflection because of the access checks (except for
_adddynproperty).


Previous Comments:
------------------------------------------------------------------------
[2010-10-26 18:34:52] cataphr...@php.net

Description:
------------
The status of the flag ZEND_ACC_IMPLICIT_PUBLIC is somewhat unclear. In
the ZE:



* PHP 5.3 checks for it in a few places, but doesn't set it anymore as
the body of zend_do_declare_implicit_property is commented out.

* trunk retains only the definition of ZEND_ACC_IMPLICIT_PUBLIC,
everything else is gone.



So it seems that the flag ZEND_ACC_IMPLICIT_PUBLIC, apparently
originally used to signal dynamic properties, is only used by the
reflection extension. The reflection extension, not being able to depend
on the Zend Engine to set it, sets the flag itself when it finds a
dynamic property, i.e. a property that is in the object hash table but
has no property_info (ReflectionProperty::__construct and
ReflectionClass::getProperty).



This would be unnecessary if zend_get_property_info set the flag
ZEND_ACC_IMPLICIT_PUBLIC over here:



http://lxr.php.net/opengrok/xref/PHP_TRUNK/Zend/zend_object_handlers.c#310



In that case, the reflection extension could just call
zend_get_property_info and not do directly lookups in
ce->properties_info. Though right now it would be possible to call
zend_get_property_info and check for equality to &EG(property_info),
this is suboptimal.



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



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

Reply via email to