ID: 27265 User updated by: jw at jwscripts dot com Reported By: jw at jwscripts dot com Status: Bogus Bug Type: Zend Engine 2 problem Operating System: * PHP Version: 5CVS-2004-02-15 New Comment:
Another workaround consists of first trying to create an instance of the ReflectionProperty class and when this fails, creating an instance of the ReflectionObject class and search for a match in the arrays returned by its getConstants() or getStaticProperties() method (whichever is appropriate). Anyways, thanks for looking into this again. Great job everybody! Previous Comments: ------------------------------------------------------------------------ [2004-06-09 11:13:13] D dot Kingma at jool dot nl I Think the problem your are describing is more that of that the reflectionProperty class constructor doesn't work well with properties that are written in capitals, as your example with static illustrates. When you remove the static keyword the problem is reproducable (You cannot initiate the reflectionProperty when the name of the property is in capitals). [Workaround] You could use the getProperties method of the reflectionClass object which will return the reflectionProperty object for variables that are written in capitals. ------------------------------------------------------------------------ [2004-02-16 16:55:57] jw at jwscripts dot com > We are missing a class 'Reflection_Const'. IMO, you are not missing a Reflection_Const class, but a method isConst() in the Reflection_Property class. ------------------------------------------------------------------------ [2004-02-16 15:04:18] [EMAIL PROTECTED] 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 We are missing a class \'Reflection_Const\'. ------------------------------------------------------------------------ [2004-02-15 15:00:46] jw at jwscripts dot com Description: ------------ When passing a constant to the constructor of the Reflection_Property class, an exception is thrown. You can work around this, e.g., by creating an instance of the Reflection_Object class instead, but this isn't very pretty. The same problem occurres when a constant with one or more uppercased characters is defined, e.g.: const $TEST = "foo"; Reproduce code: --------------- <? class Foo { const TEST = "foo"; // Fails too: static $TEST = "foo"; // Success : static $test = "foo"; } class Types extends Reflection_Property { public function __construct($object, $name) { parent::__construct($object, $name); } } $types = new Types("Foo", "TEST"); ?> Expected result: ---------------- No output Actual result: -------------- Fatal error: Uncaught exception 'reflection_exception' with message 'Property Foo::$TEST does not exist' in [...] Stack trace: #0 [...](13): Types->__construct() #1 {main} thrown in [...] on line [...] ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27265&edit=1