3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface OriginalContract { } interface MoreSpecificContract extends OriginalContract { } interface BazInterface { public function baz(OriginalContract $item); } class Foo implements BazInterface { public function baz(OriginalContract $item) {} } class Bar implements BazInterface { 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 BazInterface::baz(OriginalContract $item) in /in/7gAPj on line 23
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:
34.16 ms | 401 KiB | 8 Q