Hi All,

again with bad news, sorry for the mess, the argument override is allowed
in wrong direction what beaks Liskov's principle so need to stop it again.
Hold on for a while, don't loose faith.

regards,
Michał

2016-11-14 9:53 GMT+01:00 Michał Brzuchalski <[email protected]>:

> Hi All,
>
> Id' like to anounce voting reset - will end in two weeks on 28.11.2016 at
> midnight and requires 2/3 majority as previously.
>
> There were improvements suggested by Joe Watkins and earlier by Nikita
> Popov to the patch.
>
> Those improvements are described on RFC under "Covariance" section
> https://wiki.php.net/rfc/object-typehint#covariance
>
> It means any `object` typehint or return type can be narrowed to more
> specified type (class name) similar to `iterable` pseudo-type but behaves
> covariant (more general type can be raplaced with narrowed one).
>
> P.S. I hope this improvement will bring more positive votes.
>
> regards,
> --
> Michał
>
> 2016-11-10 13:30 GMT+01:00 Joe Watkins <[email protected]>:
>
>> Levi,
>>
>>     You are assuming it would *need* to be removed :)
>>
>>     Future RFC's must deal with the engine as they find it, as this RFC
>> has done.
>>
>>     If it is true that this would prohibit enums being non-objects, and
>> I'm not certain that it does, then enums would have to be objects, if
>> that's how they find the engine.
>>
>>     If your only concern is about a non-existent feature, then maybe
>> you're concern can be alleviated by the non-existent JIT (which does
>> partially exist): With a JIT, it doesn't much matter what represents enums
>> anyway.
>>
>>     These are problems for the future, not today.
>>
>> Cheers
>> Joe
>>
>> On Thu, Nov 10, 2016 at 12:20 PM, Levi Morrison <[email protected]> wrote:
>>
>>> On Thu, Nov 10, 2016 at 5:18 AM, Joe Watkins <[email protected]>
>>> wrote:
>>> > Morning Levi,
>>> >
>>> >> There is a future compatibility issue of this same type with `object`:
>>> >
>>> > If that is an issue, it is for future RFC's to deal with.
>>> >
>>> > Cheers
>>> > Joe
>>> >
>>> >
>>> > On Thu, Nov 10, 2016 at 12:12 PM, Levi Morrison <[email protected]> wrote:
>>> >>
>>> >> On Thu, Nov 10, 2016 at 2:11 AM, Niklas Keller <[email protected]>
>>> wrote:
>>> >> > 2016-11-09 21:53 GMT+01:00 Christoph M. Becker <[email protected]>:
>>> >> >
>>> >> >> On 09.11.2016 at 17:28, Joe Watkins wrote:
>>> >> >>
>>> >> >> >     I want to explain why I voted no on this:
>>> >> >> >
>>> >> >> >     I think it's significantly less useful without variance,
>>> variance
>>> >> >> > is
>>> >> >> > something that is usually difficult to achieve in PHP, but not
>>> for
>>> >> >> > this
>>> >> >> > feature in particular.
>>> >> >>
>>> >> >> Can you please elaborate what you mean with variance?  I see some
>>> >> >> practical use cases for covariance of a method with return type
>>> object,
>>> >> >> but I don't see how contravariance could be achieved for
>>> parameters of
>>> >> >> type object.
>>> >> >>
>>> >> >> If your suggestion is only about invariance of object return
>>> types, I'm
>>> >> >> not sure if this very special case would make sense (for
>>> consistency
>>> >> >> reasons).
>>> >> >>
>>> >> >
>>> >> > We already have it for iterable -> array. We would have it for all
>>> other
>>> >> > types if there wouldn't be an implementation issue.
>>> >> >
>>> >> > Regards, Niklas
>>> >> >
>>> >> > Cheers,
>>> >> >> Christoph
>>> >> >>
>>> >> >> >     I absolutely want it, but I want it to be properly useful.
>>> >> >> >
>>> >> >> >     If the RFC were halted and patched to include variance, I'd
>>> +1
>>> >> >> > it.
>>> >> >> >
>>> >> >> > Cheers
>>> >> >> > Joe
>>> >> >> >
>>> >> >> > On Sun, Nov 6, 2016 at 5:28 PM, Michał Brzuchalski
>>> >> >> > <michal@brzuchalski.
>>> >> >> .com>
>>> >> >> > wrote:
>>> >> >> >
>>> >> >> >> Hi everyone,
>>> >> >> >>
>>> >> >> >> Two weeks have passed since this RFC was put to discussion here.
>>> >> >> >>
>>> >> >> >> Therefore, I'm going to put it to a vote for inclusion in PHP
>>> 7.2.
>>> >> >> >>
>>> >> >> >> Voting starts today, 2016-11-06, and will close after two weeks
>>> on
>>> >> >> >> the
>>> >> >> >> Sunday 2016-11-20 at midnight.
>>> >> >> >>
>>> >> >> >> The RFC and voting widget can be found here:
>>> >> >> >> https://wiki.php.net/rfc/object-typehint
>>> >> >> >>
>>> >> >> >> It's a normal 2/3 majority required vote.
>>> >> >> >>
>>> >> >> >> Thanks!
>>> >> >> >> --
>>> >> >> >> regards / pozdrawiam,
>>> >> >> >> --
>>> >> >> >> Michał Brzuchalski
>>> >> >> >> about.me/brzuchal
>>> >> >> >> brzuchalski.com
>>> >> >> >>
>>> >> >> >
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> PHP Internals - PHP Runtime Development Mailing List
>>> >> >> To unsubscribe, visit: http://www.php.net/unsub.php
>>> >> >>
>>> >> >>
>>> >>
>>> >> In a return type context `iterable` can be changed to `Traversable` or
>>> >> `array`; it cannot be changed to `Collection` as we cannot guarantee
>>> >> at compile-time that `Collection` implements Traversable.
>>> >>
>>> >> There is a future compatibility issue of this same type with `object`:
>>> >> right now the only user-definable types are objects. However, enums
>>> >> are an often requested feature and they may not be objects. Thus we
>>> >> wouldn't be able to guarantee that `Foo` is an object. There is a
>>> >> draft RFC with a patch for enums and expect it will come to a
>>> >> discussion soon, so I don't think we'll have to wait very long to know
>>> >> the answer here.
>>> >
>>> >
>>>
>>> I strongly disagree here; once we add `object` return type covariance
>>> it cannot easily be removed.
>>>
>>
>>
>
>
> --
> regards / pozdrawiam,
> --
> Michał Brzuchalski
> about.me/brzuchal
> brzuchalski.com
>



-- 
regards / pozdrawiam,
--
Michał Brzuchalski
about.me/brzuchal
brzuchalski.com

Reply via email to