ReflectionClass_getStaticPropertyValue_001.phpt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. ReflectionClass::getStaticPropertyValue()
  3. --CREDITS--
  4. Robin Fernandes <robinf@php.net>
  5. Steve Seear <stevseea@php.net>
  6. --FILE--
  7. <?php
  8. class A {
  9. static private $privateOverridden = "original private";
  10. static protected $protectedOverridden = "original protected";
  11. static public $publicOverridden = "original public";
  12. }
  13. class B extends A {
  14. static private $privateOverridden = "changed private";
  15. static protected $protectedOverridden = "changed protected";
  16. static public $publicOverridden = "changed public";
  17. }
  18. echo "Retrieving static values from A:\n";
  19. $rcA = new ReflectionClass('A');
  20. var_dump($rcA->getStaticPropertyValue("privateOverridden", "default value"));
  21. var_dump($rcA->getStaticPropertyValue("\0A\0privateOverridden"));
  22. var_dump($rcA->getStaticPropertyValue("protectedOverridden", "default value"));
  23. var_dump($rcA->getStaticPropertyValue("\0*\0protectedOverridden"));
  24. var_dump($rcA->getStaticPropertyValue("publicOverridden"));
  25. echo "\nRetrieving static values from B:\n";
  26. $rcB = new ReflectionClass('B');
  27. var_dump($rcB->getStaticPropertyValue("\0A\0privateOverridden"));
  28. var_dump($rcB->getStaticPropertyValue("\0B\0privateOverridden"));
  29. var_dump($rcB->getStaticPropertyValue("\0*\0protectedOverridden"));
  30. var_dump($rcB->getStaticPropertyValue("publicOverridden"));
  31. echo "\nRetrieving non-existent values from A with no default value:\n";
  32. try {
  33. var_dump($rcA->getStaticPropertyValue("protectedOverridden"));
  34. echo "you should not see this";
  35. } catch (Exception $e) {
  36. echo $e->getMessage() . "\n";
  37. }
  38. try {
  39. var_dump($rcA->getStaticPropertyValue("privateOverridden"));
  40. echo "you should not see this";
  41. } catch (Exception $e) {
  42. echo $e->getMessage() . "\n";
  43. }
  44. ?>
  45. --EXPECTF--
  46. Retrieving static values from A:
  47. string(13) "default value"
  48. Fatal error: Uncaught ReflectionException: Class A does not have a property named in %s:%d
  49. Stack trace:
  50. #0 %s(%d): ReflectionClass->getStaticPropertyValue('\x00A\x00privateOverr...')
  51. #1 {main}
  52. thrown in %s on line %d