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 5.4.2 - 5.4.45, 5.5.24 - 5.5.29, 5.6.7 - 5.6.13
Fatal error: Interface function BazInterface::baz() cannot contain body in /in/Cg0do on line 13
Process exited with code 255.

preferences:
192.51 ms | 1387 KiB | 63 Q