xref: /PHP-7.4/Zend/tests/try/try_finally_020.phpt (revision d66d1b97)
1--TEST--
2Combination of foreach, finally and exception (call order)
3--FILE--
4<?php
5class 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
15foreach ([new A(1)] as $a) {
16    $a = null;
17    try {
18        foreach ([new A(2)] as $a) {
19            $a = null;
20            try {
21                foreach ([new A(3)] as $a) {
22                    $a = null;
23                    throw new Exception();
24                }
25            } finally {
26                echo "finally1\n";
27            }
28        }
29    } catch (Exception $e) {
30        echo "catch\n";
31    } finally {
32        echo "finally2\n";
33    }
34}
35?>
36--EXPECT--
37destruct3
38finally1
39destruct2
40catch
41finally2
42destruct1
43