3v4l.org

run code in 300+ PHP versions simultaneously
<?php $limiter = 50; $func = function() use (&$limiter, &$func) { $limiter--; if (!$limiter) { print "<pre>"; debug_print_backtrace(); throw new Exception("test error"); } if ($limiter <= 0) return; $func(); }; $func();
Output for git.master, git.master_jit, rfc.property-hooks
<pre>#0 /in/6QGXt(15): {closure}() #1 /in/6QGXt(15): {closure}() #2 /in/6QGXt(15): {closure}() #3 /in/6QGXt(15): {closure}() #4 /in/6QGXt(15): {closure}() #5 /in/6QGXt(15): {closure}() #6 /in/6QGXt(15): {closure}() #7 /in/6QGXt(15): {closure}() #8 /in/6QGXt(15): {closure}() #9 /in/6QGXt(15): {closure}() #10 /in/6QGXt(15): {closure}() #11 /in/6QGXt(15): {closure}() #12 /in/6QGXt(15): {closure}() #13 /in/6QGXt(15): {closure}() #14 /in/6QGXt(15): {closure}() #15 /in/6QGXt(15): {closure}() #16 /in/6QGXt(15): {closure}() #17 /in/6QGXt(15): {closure}() #18 /in/6QGXt(15): {closure}() #19 /in/6QGXt(15): {closure}() #20 /in/6QGXt(15): {closure}() #21 /in/6QGXt(15): {closure}() #22 /in/6QGXt(15): {closure}() #23 /in/6QGXt(15): {closure}() #24 /in/6QGXt(15): {closure}() #25 /in/6QGXt(15): {closure}() #26 /in/6QGXt(15): {closure}() #27 /in/6QGXt(15): {closure}() #28 /in/6QGXt(15): {closure}() #29 /in/6QGXt(15): {closure}() #30 /in/6QGXt(15): {closure}() #31 /in/6QGXt(15): {closure}() #32 /in/6QGXt(15): {closure}() #33 /in/6QGXt(15): {closure}() #34 /in/6QGXt(15): {closure}() #35 /in/6QGXt(15): {closure}() #36 /in/6QGXt(15): {closure}() #37 /in/6QGXt(15): {closure}() #38 /in/6QGXt(15): {closure}() #39 /in/6QGXt(15): {closure}() #40 /in/6QGXt(15): {closure}() #41 /in/6QGXt(15): {closure}() #42 /in/6QGXt(15): {closure}() #43 /in/6QGXt(15): {closure}() #44 /in/6QGXt(15): {closure}() #45 /in/6QGXt(15): {closure}() #46 /in/6QGXt(15): {closure}() #47 /in/6QGXt(15): {closure}() #48 /in/6QGXt(15): {closure}() #49 /in/6QGXt(18): {closure}() Fatal error: Uncaught Exception: test error in /in/6QGXt:10 Stack trace: #0 /in/6QGXt(15): {closure}() #1 /in/6QGXt(15): {closure}() #2 /in/6QGXt(15): {closure}() #3 /in/6QGXt(15): {closure}() #4 /in/6QGXt(15): {closure}() #5 /in/6QGXt(15): {closure}() #6 /in/6QGXt(15): {closure}() #7 /in/6QGXt(15): {closure}() #8 /in/6QGXt(15): {closure}() #9 /in/6QGXt(15): {closure}() #10 /in/6QGXt(15): {closure}() #11 /in/6QGXt(15): {closure}() #12 /in/6QGXt(15): {closure}() #13 /in/6QGXt(15): {closure}() #14 /in/6QGXt(15): {closure}() #15 /in/6QGXt(15): {closure}() #16 /in/6QGXt(15): {closure}() #17 /in/6QGXt(15): {closure}() #18 /in/6QGXt(15): {closure}() #19 /in/6QGXt(15): {closure}() #20 /in/6QGXt(15): {closure}() #21 /in/6QGXt(15): {closure}() #22 /in/6QGXt(15): {closure}() #23 /in/6QGXt(15): {closure}() #24 /in/6QGXt(15): {closure}() #25 /in/6QGXt(15): {closure}() #26 /in/6QGXt(15): {closure}() #27 /in/6QGXt(15): {closure}() #28 /in/6QGXt(15): {closure}() #29 /in/6QGXt(15): {closure}() #30 /in/6QGXt(15): {closure}() #31 /in/6QGXt(15): {closure}() #32 /in/6QGXt(15): {closure}() #33 /in/6QGXt(15): {closure}() #34 /in/6QGXt(15): {closure}() #35 /in/6QGXt(15): {closure}() #36 /in/6QGXt(15): {closure}() #37 /in/6QGXt(15): {closure}() #38 /in/6QGXt(15): {closure}() #39 /in/6QGXt(15): {closure}() #40 /in/6QGXt(15): {closure}() #41 /in/6QGXt(15): {closure}() #42 /in/6QGXt(15): {closure}() #43 /in/6QGXt(15): {closure}() #44 /in/6QGXt(15): {closure}() #45 /in/6QGXt(15): {closure}() #46 /in/6QGXt(15): {closure}() #47 /in/6QGXt(15): {closure}() #48 /in/6QGXt(15): {closure}() #49 /in/6QGXt(18): {closure}() #50 {main} thrown in /in/6QGXt on line 10
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
80.26 ms | 405 KiB | 8 Q