3v4l.org

run code in 300+ PHP versions simultaneously
<?php final class Options { // This is OK but why redundant initialization? // public array $stack = []; public array $stack; public function __construct(array $stack) { $this->stack = $stack; } public function __set(string $name, $value) { // if (empty($this->stack)) { // // This line below yields: object(acme\Options)#1 (0) { ["stack"]=> uninitialized(array) }. // // return; // // This line below yields: object(acme\Options)#1 (1) { ["stack"]=> array(1) { ["stack"]=> array(1) { ["one"]=> int(1) } } }. // // $this->stack = []; // } // This is solving problem but the purpose is not that also corrupting $stack structure inserting a new sub-array. // object(acme\Options)#1 (1) { ["stack"]=> array(2) { ["one"]=> int(1) ["stack"]=> array(1) { ["one"]=> int(1) } } } // $this->stack = $value; // This is indicating that __set called before (before __construct). // throw new \Exception(); // This is problematic part. $this->stack[$name] = $value; } public function __get(string $name) { // This is indicating that __get called before (before __construct). // throw new \Exception(); return $this->stack[$name] ?? null; } } var_dump(new Options(['one' => 1]));
Output for 7.4.4 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
object(Options)#1 (1) { ["stack"]=> array(1) { ["one"]=> int(1) } }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 object(Options)#1 (1) { ["stack"]=> array(1) { ["one"]=> int(1) } }
Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33
Parse error: syntax error, unexpected 'array' (T_ARRAY), expecting function (T_FUNCTION) or const (T_CONST) in /in/VJFBK on line 6
Process exited with code 255.

preferences:
166.87 ms | 402 KiB | 180 Q