3v4l.org

run code in 500+ PHP versions simultaneously
<?php if (!function_exists('get_error_handler')) { function noop_error_handler() { } function get_error_handler(): ?callable { $handler = set_error_handler('noop_error_handler'); restore_error_handler(); return $handler; } } $handler = function (int $errno, string $errstr, ?string $errfile, ?int $errline) { echo "Error: " . $errstr . "\n"; }; var_dump(get_error_handler()); // NULL set_error_handler($handler); var_dump(get_error_handler() === $handler); // bool(true) $new_handler = function (int $errno, string $errstr, ?string $errfile, ?int $errline) { echo "Error: " . $errstr . "\n"; }; var_dump(get_error_handler()); // NULL set_error_handler($new_handler); var_dump(get_error_handler() === $new_handler); // bool(true)
Output for rfc.property-hooks
NULL bool(true) object(Closure)#1 (1) { ["parameter"]=> array(4) { ["$errno"]=> string(10) "<required>" ["$errstr"]=> string(10) "<required>" ["$errfile"]=> string(10) "<required>" ["$errline"]=> string(10) "<required>" } } bool(true)
Output for git.master, git.master_jit
NULL bool(true) object(Closure)#1 (4) { ["name"]=> string(22) "{closure:/in/AtMR3:13}" ["file"]=> string(9) "/in/AtMR3" ["line"]=> int(13) ["parameter"]=> array(4) { ["$errno"]=> string(10) "<required>" ["$errstr"]=> string(10) "<required>" ["$errfile"]=> string(10) "<required>" ["$errline"]=> string(10) "<required>" } } bool(true)

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:
49.87 ms | 2770 KiB | 4 Q