3v4l.org

run code in 300+ PHP versions simultaneously
<?php enum WeekDay: string { case Monday = 'monday'; case Tuesday = 'tuesday'; case Wednesday = 'wednesday'; case Thursday = 'thursday'; case Friday = 'friday'; case Saturday = 'saturday'; case Sunday = 'sunday'; } class Bar {} class Foo { public function hello() { return "Hello world" . PHP_EOL; } } $mondayKey = WeekDay::Monday; echo "== WEAKMAP WITH ENUM ==" . PHP_EOL; $map = new WeakMap(); $map[$mondayKey] = new Foo(); // etc echo "Dumping the Map with an ENUM" . PHP_EOL; var_dump($map); echo "unsetting reference to ENUM's object" . PHP_EOL; unset($mondayKey); echo "Dumping the Map with an ENUM" . PHP_EOL; var_dump($map); echo "IT'STILL THERE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; echo "== WEAKMAP WITH OBJECT ==" . PHP_EOL; $map = new WeakMap(); $objKey = new Bar(); $map[$objKey] = new Foo(); echo "Dumping the Map with an OBJECT" . PHP_EOL; var_dump($map); echo "unsetting the OBJECT" . PHP_EOL; unset($objKey); echo "Dumping the Map with an OBJECT" . PHP_EOL; var_dump($map); echo "IT'S GONE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; $tuesdayKey = WeekDay::Tuesday; $otherTuesdayKey = WeekDay::Tuesday; echo "== SPLOBJECTSTORAGE WITH ENUM ==" . PHP_EOL; $objStore = new SplObjectStorage(); $objStore[$tuesdayKey] = new Foo(); echo "Dumping the SPLOBJECTSTORAGE with an ENUM" . PHP_EOL; var_dump($objStore); echo "unsetting the ENUM" . PHP_EOL; unset($tuesdayKey); echo "Dumping the SPLOBJECTSTORAGE with an ENUM" . PHP_EOL; var_dump($objStore); echo "IT'STILL THERE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; echo "== SPLOBJECTSTORAGE WITH OBJECT ==" . PHP_EOL; $objStore = new SplObjectStorage(); $objKey = new Bar(); $objStore[$objKey] = new Bar(); echo "Dumping the SPLOBJECTSTORAGE with an OBJECT" . PHP_EOL; var_dump($objStore); echo "unsetting the OBJECT" . PHP_EOL; unset($tuesdayKey); echo "Dumping the SPLOBJECTSTORAGE with an OBJECT" . PHP_EOL; var_dump($objStore); echo "IT'STILL THERE !" . PHP_EOL;

preferences:
28.2 ms | 404 KiB | 5 Q