Hi Mike,

wt., 16 cze 2020 o 08:59 Mike Schinkel <m...@newclarity.net> napisał(a):

> Hi internals,
>
> Given that there appears to be some appetite to reduce checks for
> inappropriate signatures[1] I am wondering if anyone has strong opinions —
> pro or con — on removing checks for static methods?
>
> My primary use-case where I would like to see checked relaxed is for
> static methods used as factory methods[2].
>
> Per [3] it seems that all but the least upvoted answer argues that LSP
> applies to instances, not static methods.
>
> Per [4] it seems that all upvoted answers agree that constructors should
> not be constrained by LSP, and since a factory method is a form of a
> constructor it would seem that if constructors do not require LSP then
> factory methods would not either.
>
> Does anyone see any issues with relaxing these checks for static methods
> that would have them downvote an RFC on the topic?
>

I can only see a one huge BC break.
What you suggest would require the deprecation of static methods on
interfaces.
Currently, you can declare a static method on an interface, like this:

interface Foo {
    public static function create(): self;
}
class Bar implements Foo {
    public static function create(): self { return new self(); }
}
var_dump(Bar::create());

Hence it'll be a huge BC break and the first reason downvote to the RFC I
guess.

Cheers,
Michał Marcin Brzuchalski

Reply via email to