2016-11-21 11:00 GMT+01:00 Daniel Morris <[email protected]>:
> What happens if the method signature is defined within an interface?
Just the same as for every class. Having other rules for interfaces doesn't
make sense.
Imagine the following example:
interface I { function foo(array $foo); }
class C1 implements I { function foo(array $foo) { /* with your proposal,
we have to keep the type here? */ } }
class C2 extends C2 { function foo($foo) { /* we can suddenly drop the
parameter type now?! */ } }
> I would consider that method signature a contract and one that should not
> be able to be overwritten.
>
Subtypes can always accept more than a parent by the LSP (
https://en.wikipedia.org/wiki/Liskov_substitution_principle)
Regards, Niklas