try_finally_019.phpt 706 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. --TEST--
  2. Combination of foreach, finally and goto (call order)
  3. --FILE--
  4. <?php
  5. class A {
  6. public $n = 0;
  7. function __construct($n) {
  8. $this->n = $n;
  9. }
  10. function __destruct() {
  11. echo "destruct" . $this->n . "\n";
  12. }
  13. }
  14. foreach ([new A(1)] as $a) {
  15. $a = null;
  16. try {
  17. foreach ([new A(2)] as $a) {
  18. $a = null;
  19. try {
  20. foreach ([new A(3)] as $a) {
  21. $a = null;
  22. goto out;
  23. }
  24. } finally {
  25. echo "finally1\n";
  26. }
  27. out: ;
  28. }
  29. } finally {
  30. echo "finally2\n";
  31. }
  32. }
  33. ?>
  34. --EXPECT--
  35. destruct3
  36. finally1
  37. destruct2
  38. finally2
  39. destruct1