3v4l.org

run code in 300+ PHP versions simultaneously
<?php #[AllowDynamicProperties] class A { public function setFoo($value) { $this->foo = $value; } public function unsetFoo() { unset($this->foo); } public function dump() { var_dump($this); try { var_dump($this->foo); } catch ( Error $err ) { echo 'ERROR: ', $err->getMessage(), "\n"; } } } $a = new A; echo "Initial:\n"; $a->dump(); echo "\nAssign null:\n"; $a->setFoo(null); $a->dump(); echo "\nUnset:\n"; $a->unsetFoo(); $a->dump(); echo "\nAssign value:\n"; $a->setFoo(42); $a->dump();
Output for 8.1.24 - 8.1.28, 8.2.11 - 8.2.18, 8.3.0 - 8.3.7
Initial: object(A)#1 (0) { } Warning: Undefined property: A::$foo in /in/ln7Or on line 14 NULL Assign null: object(A)#1 (1) { ["foo"]=> NULL } NULL Unset: object(A)#1 (0) { } Warning: Undefined property: A::$foo in /in/ln7Or on line 14 NULL Assign value: object(A)#1 (1) { ["foo"]=> int(42) } int(42)

preferences:
49.07 ms | 402 KiB | 26 Q