__set__get_005.phpt 905 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. --TEST--
  2. ZE2 __set() and __get()
  3. --FILE--
  4. <?php
  5. class Test
  6. {
  7. protected $x;
  8. function __get($name) {
  9. echo __METHOD__ . "\n";
  10. if (isset($this->x[$name])) {
  11. return $this->x[$name];
  12. }
  13. else
  14. {
  15. return NULL;
  16. }
  17. }
  18. function __set($name, $val) {
  19. echo __METHOD__ . "\n";
  20. $this->x[$name] = $val;
  21. }
  22. }
  23. class AutoGen
  24. {
  25. protected $x;
  26. function __get($name) {
  27. echo __METHOD__ . "\n";
  28. if (!isset($this->x[$name])) {
  29. $this->x[$name] = new Test();
  30. }
  31. return $this->x[$name];
  32. }
  33. function __set($name, $val) {
  34. echo __METHOD__ . "\n";
  35. $this->x[$name] = $val;
  36. }
  37. }
  38. $foo = new AutoGen();
  39. $foo->bar->baz = "Check";
  40. var_dump($foo->bar);
  41. var_dump($foo->bar->baz);
  42. ?>
  43. ===DONE===
  44. --EXPECTF--
  45. AutoGen::__get
  46. Test::__set
  47. AutoGen::__get
  48. object(Test)#%d (1) {
  49. ["x":protected]=>
  50. array(1) {
  51. ["baz"]=>
  52. string(5) "Check"
  53. }
  54. }
  55. AutoGen::__get
  56. Test::__get
  57. string(5) "Check"
  58. ===DONE===