strlen.phpt 699 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --TEST--
  2. Fixed execute_data corruption with __toString()
  3. --FILE--
  4. <?php
  5. class Test
  6. {
  7. public $something = 'hello';
  8. public function __toString()
  9. {
  10. return $this->something;
  11. }
  12. }
  13. $t = new Test;
  14. var_dump(strlen($t));
  15. var_dump($t->something);
  16. class Test2
  17. {
  18. public $something;
  19. public function __construct(&$a)
  20. {
  21. $this->something = &$a;
  22. }
  23. public function __toString()
  24. {
  25. return $this->something;
  26. }
  27. }
  28. $a = 'world';
  29. $t2 = new Test2($a);
  30. var_dump(strlen($t2));
  31. var_dump($t2->something);
  32. var_dump($a);
  33. $a = 'foobar';
  34. var_dump(strlen($t2));
  35. var_dump($t2->something);
  36. --EXPECT--
  37. int(5)
  38. string(5) "hello"
  39. int(5)
  40. string(5) "world"
  41. string(5) "world"
  42. int(6)
  43. string(6) "foobar"