__set__get_005.phpt 1014 B

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