ReflectionClass_setStaticPropertyValue_001.phpt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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("privateOverridden", "new value 1");
  21. $rcA->setStaticPropertyValue("protectedOverridden", "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("privateOverridden", "new value 4");
  27. $rcB->setStaticPropertyValue("privateOverridden", "new value 5");
  28. $rcB->setStaticPropertyValue("protectedOverridden", "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("protectedDoesNotExist", "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("privateDoesNotExist", "new value 9"));
  41. echo "you should not see this";
  42. } catch (Exception $e) {
  43. echo $e->getMessage() . "\n";
  44. }
  45. ?>
  46. --EXPECT--
  47. Set static values in A:
  48. Array
  49. (
  50. [privateOverridden] => new value 1
  51. [protectedOverridden] => new value 2
  52. [publicOverridden] => new value 3
  53. )
  54. Set static values in B:
  55. Array
  56. (
  57. [privateOverridden] => new value 1
  58. [protectedOverridden] => new value 2
  59. [publicOverridden] => new value 3
  60. )
  61. Array
  62. (
  63. [privateOverridden] => new value 5
  64. [protectedOverridden] => new value 6
  65. [publicOverridden] => new value 7
  66. )
  67. Set non-existent values from A with no default value:
  68. Class A does not have a property named protectedDoesNotExist
  69. Class A does not have a property named privateDoesNotExist