3v4l.org

run code in 500+ PHP versions simultaneously
<?php class A {} class B {} class X { private function create(string $class): A|B { return new $class(); } public function createA(): A { return $this->create('A'); } public function createB(): B { return $this->create('B'); } } $test = new X; $new = $test->createB(); var_export($new);
Output for 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
\B::__set_state(array( ))
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.34
B::__set_state(array( ))

preferences:
69.97 ms | 1100 KiB | 4 Q