3v4l.org

run code in 300+ PHP versions simultaneously
<?php function acquire_some_resource() { return new class { public function __construct() { echo "<locked>\n"; } public function __destruct() { echo "</locked>\n"; } }; } echo "acquire some_resource\n"; $some_resource = acquire_some_resource(); echo "create fn capturing some_resource by value\n"; $fn = function () use ($some_resource) { $some_resource = null; // this line actually doesn't have any effect }; echo "call fn\n"; $fn(); echo "unset fn\n"; $fn = null; echo "unset some_resource\n"; $some_resource = null; echo "DONE.\n";
Output for 8.1.7 - 8.1.28, 8.2.10 - 8.2.18, 8.3.0 - 8.3.6
acquire some_resource <locked> create fn capturing some_resource by value call fn unset fn unset some_resource </locked> DONE.

preferences:
65.31 ms | 402 KiB | 28 Q