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.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
acquire some_resource <locked> create fn capturing some_resource by value unset some_resource call fn unset fn </locked> DONE.

preferences:
104.88 ms | 407 KiB | 5 Q