3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface Response { const POSITIVE = "Да \n"; const NEGATIVE = "Нет \n"; } interface Girl {} interface Boy {} abstract class Bride implements Girl { public function bePretty() { echo "I`m pretty \n"; } } abstract class Groom implements Boy { public function alwaysAgree() { if (static::class === Bride::class) { echo Response::POSITIVE; } } } class Nastia extends Bride { public function responseToPriest(){ if (static::class === Fender::class) { echo Response::POSITIVE; } echo Response::NEGATIVE; } } class Fender extends Groom { public function responseToPriest(){ if (static::class === Nastia::class) { echo Response::POSITIVE; } echo Response::NEGATIVE; } } class Priest { public function askIfAgree($human) { if ($human instanceof Bride) { echo "Do you take this man husband? \n"; } if ($human instanceof Groom) { echo "Do you take this woman to be your wife? \n"; } $human->responseToPriest(); } } class Wedding { public static function begin($bride, $groom) { $priest = new Priest(); $responseBride = $priest->askIfAgree($bride); $responseGroom = $priest->askIfAgree($groom); if ($responseBride === true && $responseGroom === true) { return new JustMarried; } return false; } } class JustMarried { public function liveHappyEverAfter() { echo 'And they lived happily ever after'; } } $nastia = new Nastia(); $fender = new Fender(); $nastia->bePretty(); $fender->alwaysAgree(); $NastiaAndFenderWeddingJustMarried = Wedding::begin($nastia, $fender); $NastiaAndFenderWeddingJustMarried->liveHappyEverAfter();
Output for 8.3.0 - 8.3.4, 8.3.6
I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Uncaught Error: Call to a member function liveHappyEverAfter() on false in /in/0VQWv:79 Stack trace: #0 {main} thrown in /in/0VQWv on line 79
Process exited with code 255.
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 I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Uncaught Error: Call to a member function liveHappyEverAfter() on false in /in/0VQWv:79 Stack trace: #0 {main} thrown in /in/0VQWv on line 79
Process exited with code 255.
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18
I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Uncaught Error: Call to a member function liveHappyEverAfter() on bool in /in/0VQWv:79 Stack trace: #0 {main} thrown in /in/0VQWv on line 79
Process exited with code 255.
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33
I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Uncaught Error: Call to a member function liveHappyEverAfter() on boolean in /in/0VQWv:79 Stack trace: #0 {main} thrown in /in/0VQWv on line 79
Process exited with code 255.

preferences:
170.42 ms | 402 KiB | 203 Q