__set__get_005.phpt 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. --EXPECTF--
  44. AutoGen::__get
  45. Test::__set
  46. AutoGen::__get
  47. object(Test)#%d (1) {
  48. ["x":protected]=>
  49. array(1) {
  50. ["baz"]=>
  51. string(5) "Check"
  52. }
  53. }
  54. AutoGen::__get
  55. Test::__get
  56. string(5) "Check"