3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?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();
based on NlrLU
Output for 7.3.0alpha1 - 7.3.0rc3
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.2.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 boolean in /in/0VQWv:79 Stack trace: #0 {main} thrown in /in/0VQWv on line 79
Process exited with code 255.
Output for hhvm-3.15.4
I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Uncaught exception 'BadMethodCallException' with message 'Call to a member function liveHappyEverAfter() on a non-object (boolean)' in /in/0VQWv:79 Stack trace: #0 {main}
Process exited with code 255.
Output for 5.6.0 - 5.6.30
I`m pretty Do you take this man husband? Нет Do you take this woman to be your wife? Нет Fatal error: Call to a member function liveHappyEverAfter() on boolean in /in/0VQWv on line 79
Process exited with code 255.