3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface OriginalContract { } interface MoreSpecificContract extends OriginalContract { } class Foo { public function baz(OriginalContract $item) {} } class Bar extends Foo { public function baz(MoreSpecificContract $item) {} } /* I actually want Bar to accept only instances of MoreSpecificContract Since it extends OriginalContract, it should be valid imho The only way I can now do this is class Bar extends Foo { public function baz(OriginalContract $item) { if (($item instanceof MoreSpecificContract) === false) { throw new Exception("Expected something more specific"); } // do some more specific stuff } } */
Output for git.master, git.master_jit, rfc.property-hooks
Fatal error: Declaration of Bar::baz(MoreSpecificContract $item) must be compatible with Foo::baz(OriginalContract $item) in /in/sE1bi on line 18
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:
47.29 ms | 401 KiB | 8 Q