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 git.master, git.master_jit
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 rfc.property-hooks
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.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
49.41 ms | 401 KiB | 8 Q