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;
Output for 8.3.5 - 8.3.27, 8.4.9 - 8.4.14, 8.5.0 - 8.5.1
== WEAKMAP WITH ENUM == Dumping the Map with an ENUM object(WeakMap)#8 (1) { [0]=> array(2) { ["key"]=> enum(WeekDay::Monday) ["value"]=> object(Foo)#9 (0) { } } } unsetting reference to ENUM's object Dumping the Map with an ENUM object(WeakMap)#8 (1) { [0]=> array(2) { ["key"]=> enum(WeekDay::Monday) ["value"]=> object(Foo)#9 (0) { } } } IT'STILL THERE ! == WEAKMAP WITH OBJECT == Dumping the Map with an OBJECT object(WeakMap)#10 (1) { [0]=> array(2) { ["key"]=> object(Bar)#8 (0) { } ["value"]=> object(Foo)#9 (0) { } } } unsetting the OBJECT Dumping the Map with an OBJECT object(WeakMap)#10 (0) { } IT'S GONE ! == SPLOBJECTSTORAGE WITH ENUM == Dumping the SPLOBJECTSTORAGE with an ENUM object(SplObjectStorage)#8 (1) { ["storage":"SplObjectStorage":private]=> array(1) { [0]=> array(2) { ["obj"]=> enum(WeekDay::Tuesday) ["inf"]=> object(Foo)#9 (0) { } } } } unsetting the ENUM Dumping the SPLOBJECTSTORAGE with an ENUM object(SplObjectStorage)#8 (1) { ["storage":"SplObjectStorage":private]=> array(1) { [0]=> array(2) { ["obj"]=> enum(WeekDay::Tuesday) ["inf"]=> object(Foo)#9 (0) { } } } } IT'STILL THERE ! == SPLOBJECTSTORAGE WITH OBJECT == Dumping the SPLOBJECTSTORAGE with an OBJECT object(SplObjectStorage)#11 (1) { ["storage":"SplObjectStorage":private]=> array(1) { [0]=> array(2) { ["obj"]=> object(Bar)#8 (0) { } ["inf"]=> object(Bar)#9 (0) { } } } } unsetting the OBJECT Dumping the SPLOBJECTSTORAGE with an OBJECT object(SplObjectStorage)#11 (1) { ["storage":"SplObjectStorage":private]=> array(1) { [0]=> array(2) { ["obj"]=> object(Bar)#8 (0) { } ["inf"]=> object(Bar)#9 (0) { } } } } IT'STILL THERE !
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.
Output for 8.3.28
/bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28)
Process exited with code 1.

preferences:
63.87 ms | 409 KiB | 5 Q