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 "unset some_resource\n"; $some_resource = null; echo "call fn\n"; $fn(); echo "unset fn\n"; $fn = null; echo "DONE.\n";
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
acquire some_resource <locked> create fn capturing some_resource by value unset some_resource call fn unset fn </locked> DONE.

preferences:
141.18 ms | 402 KiB | 121 Q