3v4l.org

run code in 300+ PHP versions simultaneously
<?php ini_set('zend.exception_ignore_args', 1); function main() { try { foo(false); } catch (Exception $ex) { echo $ex->getMessage() . PHP_EOL; } try { foo(true); } catch (Exception $ex) { echo $ex->getMessage() . PHP_EOL; } } function foo($ok) { $file = new SplFileObject('/tmp/hoge.txt', 'a'); if ($file->flock(LOCK_EX|LOCK_NB) == false) { throw new RuntimeException("Unable lock file"); } bar($file, $ok); // この関数を抜けたときにファイルは閉じられるはず } function bar(SplFileObject $file, $ok) { // なにか処理する if ($ok == false) { // 失敗したので例外を投げる throw new RuntimeException("oops!!!"); } echo "ok\n"; } main();
Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
oops!!! ok
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33
oops!!! Unable lock file

preferences:
79.19 ms | 407 KiB | 5 Q