ReflectionClass_setStaticPropertyValue_001.phpt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. ReflectionClass::setStaticPropertyValue()
  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 "Set static values in A:\n";
  19. $rcA = new ReflectionClass('A');
  20. $rcA->setStaticPropertyValue("\0A\0privateOverridden", "new value 1");
  21. $rcA->setStaticPropertyValue("\0*\0protectedOverridden", "new value 2");
  22. $rcA->setStaticPropertyValue("publicOverridden", "new value 3");
  23. print_r($rcA->getStaticProperties());
  24. echo "\nSet static values in B:\n";
  25. $rcB = new ReflectionClass('B');
  26. $rcB->setStaticPropertyValue("\0A\0privateOverridden", "new value 4");
  27. $rcB->setStaticPropertyValue("\0B\0privateOverridden", "new value 5");
  28. $rcB->setStaticPropertyValue("\0*\0protectedOverridden", "new value 6");
  29. $rcB->setStaticPropertyValue("publicOverridden", "new value 7");
  30. print_r($rcA->getStaticProperties());
  31. print_r($rcB->getStaticProperties());
  32. echo "\nSet non-existent values from A with no default value:\n";
  33. try {
  34. var_dump($rcA->setStaticPropertyValue("protectedOverridden", "new value 8"));
  35. echo "you should not see this";
  36. } catch (Exception $e) {
  37. echo $e->getMessage() . "\n";
  38. }
  39. try {
  40. var_dump($rcA->setStaticPropertyValue("privateOverridden", "new value 9"));
  41. echo "you should not see this";
  42. } catch (Exception $e) {
  43. echo $e->getMessage() . "\n";
  44. }
  45. ?>
  46. --EXPECTF--
  47. Set static values in A:
  48. Fatal error: Uncaught ReflectionException: Class A does not have a property named in %s:%d
  49. Stack trace:
  50. #0 %s(%d): ReflectionClass->setStaticPropertyValue('\x00A\x00privateOverr...', 'new value 1')
  51. #1 {main}
  52. thrown in %s on line %d