On 05/02/15 13:10, Julien Pauli wrote: > On Thu, Feb 5, 2015 at 2:08 AM, Andrea Faulds <a...@ajf.me> wrote: > >> Hi Hannes, >> >>> On 4 Feb 2015, at 23:58, Hannes Magnusson <hannes.magnus...@gmail.com> >> wrote: >>> >>> So what it supports "more inputs"? >>> It does constitute an LSP violation. "more inputs" is not what the >>> guarantee is at all, if that is what you want you'd typehint on a >>> interface. >>> >>> >>> It is a LSP failure to allow a string, or any other scalar value, when >>> the parent requires a specific type/object. >>> >>> It sucks that we fail our arginfo very frequently, but this is the way >> it is :] >> >> An interface requires only a minimum standard for accepted input. If a >> class implementing that interface allows a wider range of values, but still >> allows at least what the interface requires it to, it is not an LSP >> violation. Scalars are not special. >> > > If we allow larger type, why doesn't such code work ? > > interface A { } > interface B extends A { } > > class C { > public function foo(A $a) { } > } > > class D extends C { > public function foo(B $a) { } // E_STRICT > } > > This is wrong IMO. >
This is not "larger" but *more* specific. -- Regards, Mike -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php