strlen.phpt 702 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. ?>
  37. --EXPECT--
  38. int(5)
  39. string(5) "hello"
  40. int(5)
  41. string(5) "world"
  42. string(5) "world"
  43. int(6)
  44. string(6) "foobar"