bug30889.phpt 632 B

12345678910111213141516171819202122232425262728293031
  1. --TEST--
  2. Bug #30889 (Conflict between __get/__set and ++ operator)
  3. --FILE--
  4. <?php
  5. class overloaded
  6. {
  7. private $values;
  8. function __construct()
  9. {
  10. $this->values = array('a' => 0);
  11. }
  12. function __set($name, $value)
  13. {
  14. print "set $name = $value ($name was ".$this->values[$name].")\n";
  15. $this->values[$name] = $value;
  16. }
  17. function __get($name)
  18. {
  19. print "get $name (returns ".$this->values[$name].")\n";
  20. return $this->values[$name];
  21. }
  22. }
  23. $test = new overloaded();
  24. $test->a++; // __get(), then __set()
  25. ++$test->a;
  26. ?>
  27. --EXPECT--
  28. get a (returns 0)
  29. set a = 1 (a was 0)
  30. get a (returns 1)
  31. set a = 2 (a was 1)