Hello Sebastian,

  fixed in cvs - and btw it took me 5 seconds to fix - i bet you could have
done it yourself :-)

best regards
marcus

Sunday, December 11, 2005, 1:25:26 PM, you wrote:

>  The code below (which is based on Derick's code [1]) used to work until
>  recently:

>     <?php
>     class ClassWithNonPublicProperties {
>         protected $protectedProperty = 'foo';
>         private $privateProperty = 'bar';
>     }

>     function getNonPublicProperty($object, $propertyName) {
>         try {
>             $class = new ReflectionClass($object);

>             if ($class->hasProperty($propertyName)) {
>                 $property = $class->getProperty($propertyName);

>                 if (!$property->isPublic()) {
>                     if ($property->isProtected()) {
>                         $propertyName = "\0*\0" . $propertyName;
>                     } else {
>                         $propertyName = sprintf(
>                           "\0%s\0%s",

>                           get_class($object),
>                           $propertyName
>                         );
>                     }

>                     $tmp = (array) $object;

>                     return $tmp[$propertyName];
>                 } else {
>                     return $object->$propertyName;
>                 }
>             } else {
>                 throw new InvalidArgumentException;
>             }
>         }

>         catch (ReflectionException $e) {
>             throw new InvalidArgumentException;
>         }
>     }

>     $object = new ClassWithNonPublicProperties;

>     print getNonPublicProperty($object, 'protectedProperty') . "\n";
>     print getNonPublicProperty($object, 'privateProperty') . "\n";
>     ?>

>  The current PHP_5_1 prints

>     Warning: ReflectionClass::getProperty():
>     bad type specifier while parsing parameters in test.php on line 12

>     Fatal error: Call to a member function isPublic() on a non-object
>     in test.php on line 14

>  Is this change in behaviour intentional or should I file a bug report
>  for this?

>  --
>  [1] http://derickrethans.nl/private_properties_exposed.php

> -- 
> Sebastian Bergmann                      http://www.sebastian-bergmann.de/
> GnuPG Key: 0xB85B5D69 / 27A7 2B14 09E4 98CD 6277 0E5B 6867 C514 B85B 5D69




Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to