3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface A { function m(B $s): self; } class B implements A { function m(self $s): parent { return $this; } } class C extends B { function m(parent $s): A { return $this; } } $c = new C(); $r = $c->m($c); var_dump($r instanceof C);

preferences:
54.51 ms | 402 KiB | 5 Q