3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface StrategyInterface { public function run(); } class Strategy implements StrategyInterface { protected ?string $value = null; private static $counter = 0; public function __construct(private Closure $closure) { echo "Strategy Counter: ", ++self::$counter, PHP_EOL; $this->value = (string)rand(1, 100); } public function run() { $this->closure->call($this); } public function __destruct() { echo "Strategy Counter: ", --self::$counter, PHP_EOL; } } $strategy1 = new Strategy(function () { var_dump($this->value); }); $strategy2 = new Strategy(function () { var_dump($this->value); }); $strategy3 = new Strategy(function () { var_dump($this->value); }); $strategy1->run(); $strategy1 = null; $strategy2->run(); unset($strategy2); $strategy3->run(); $strategy4 = new Strategy(function () { var_dump($this->value); });
Output for 8.3.1
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "40" Strategy Counter: 2 string(2) "65" Strategy Counter: 1 string(2) "72" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.3.0
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "54" Strategy Counter: 2 string(2) "96" Strategy Counter: 1 string(2) "58" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.14
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "62" Strategy Counter: 2 string(2) "11" Strategy Counter: 1 string(2) "63" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.13
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(3) "100" Strategy Counter: 2 string(2) "75" Strategy Counter: 1 string(2) "88" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.12
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "63" Strategy Counter: 2 string(2) "75" Strategy Counter: 1 string(2) "36" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.11
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "13" Strategy Counter: 2 string(2) "77" Strategy Counter: 1 string(1) "2" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.10
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "15" Strategy Counter: 2 string(2) "99" Strategy Counter: 1 string(2) "42" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.9
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "50" Strategy Counter: 2 string(2) "69" Strategy Counter: 1 string(2) "94" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.8
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "76" Strategy Counter: 2 string(2) "20" Strategy Counter: 1 string(2) "10" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.7
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "23" Strategy Counter: 2 string(2) "84" Strategy Counter: 1 string(2) "22" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.6
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "96" Strategy Counter: 2 string(2) "68" Strategy Counter: 1 string(2) "66" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.5
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "36" Strategy Counter: 2 string(2) "74" Strategy Counter: 1 string(1) "2" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.4
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "66" Strategy Counter: 2 string(2) "13" Strategy Counter: 1 string(2) "82" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.3
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "83" Strategy Counter: 2 string(2) "91" Strategy Counter: 1 string(2) "74" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.2
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "99" Strategy Counter: 2 string(2) "68" Strategy Counter: 1 string(2) "47" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.1
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "56" Strategy Counter: 2 string(2) "27" Strategy Counter: 1 string(2) "20" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.2.0
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "56" Strategy Counter: 2 string(2) "84" Strategy Counter: 1 string(2) "65" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.27
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "79" Strategy Counter: 2 string(2) "88" Strategy Counter: 1 string(2) "58" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.26
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "89" Strategy Counter: 2 string(2) "71" Strategy Counter: 1 string(2) "63" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.25
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "67" Strategy Counter: 2 string(2) "62" Strategy Counter: 1 string(2) "58" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.24
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(1) "9" Strategy Counter: 2 string(2) "41" Strategy Counter: 1 string(2) "39" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.23
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "16" Strategy Counter: 2 string(2) "55" Strategy Counter: 1 string(2) "40" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.22
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "50" Strategy Counter: 2 string(2) "82" Strategy Counter: 1 string(2) "10" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.21
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "58" Strategy Counter: 2 string(2) "13" Strategy Counter: 1 string(2) "70" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.20
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "44" Strategy Counter: 2 string(1) "2" Strategy Counter: 1 string(2) "41" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.19
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "39" Strategy Counter: 2 string(2) "70" Strategy Counter: 1 string(2) "34" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.18
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "15" Strategy Counter: 2 string(2) "21" Strategy Counter: 1 string(1) "7" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.17
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "36" Strategy Counter: 2 string(2) "39" Strategy Counter: 1 string(2) "92" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.16
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "64" Strategy Counter: 2 string(2) "67" Strategy Counter: 1 string(2) "88" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.15
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "11" Strategy Counter: 2 string(2) "17" Strategy Counter: 1 string(2) "97" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.14
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "10" Strategy Counter: 2 string(2) "26" Strategy Counter: 1 string(2) "51" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.13
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "73" Strategy Counter: 2 string(2) "37" Strategy Counter: 1 string(2) "52" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.12
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "57" Strategy Counter: 2 string(2) "93" Strategy Counter: 1 string(2) "23" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.11
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "73" Strategy Counter: 2 string(2) "14" Strategy Counter: 1 string(2) "51" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.10
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "95" Strategy Counter: 2 string(2) "52" Strategy Counter: 1 string(2) "43" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.9
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(1) "4" Strategy Counter: 2 string(2) "23" Strategy Counter: 1 string(2) "32" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.8
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "81" Strategy Counter: 2 string(2) "43" Strategy Counter: 1 string(2) "37" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.7
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "60" Strategy Counter: 2 string(2) "85" Strategy Counter: 1 string(2) "81" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.6
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "91" Strategy Counter: 2 string(2) "17" Strategy Counter: 1 string(2) "81" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.5
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "89" Strategy Counter: 2 string(2) "36" Strategy Counter: 1 string(2) "48" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.4
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "39" Strategy Counter: 2 string(2) "10" Strategy Counter: 1 string(2) "45" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.3
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "98" Strategy Counter: 2 string(2) "69" Strategy Counter: 1 string(2) "33" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.2
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "88" Strategy Counter: 2 string(2) "89" Strategy Counter: 1 string(2) "17" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.1
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(2) "27" Strategy Counter: 2 string(2) "15" Strategy Counter: 1 string(2) "56" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0
Output for 8.1.0
Strategy Counter: 1 Strategy Counter: 2 Strategy Counter: 3 string(3) "100" Strategy Counter: 2 string(2) "72" Strategy Counter: 1 string(2) "43" Strategy Counter: 2 Strategy Counter: 1 Strategy Counter: 0

preferences:
81.36 ms | 401 KiB | 50 Q