> Am 26.04.2016 um 16:47 schrieb Levi Morrison <morrison.l...@gmail.com>: > On Tue, Apr 26, 2016 at 8:30 AM, Dmitry Stogov <dmi...@zend.com > <mailto:dmi...@zend.com>> wrote: >> >> On 04/26/2016 05:19 PM, Bob Weinand wrote: >>>> >>>> Am 26.04.2016 um 15:33 schrieb Dmitry Stogov <dmi...@zend.com>: >>>> >>>> hi Levi, >>>> >>>> It looks like your "work" on "Nullable Types" RFC was intended to win >>>> time for this patch and block "Nullable Types" again. >>>> Actually, you have been blocking it for more than a year :( >>>> >>>> I'm going to push my own RFC for voting together with "Union Types". >>>> >>>> https://wiki.php.net/rfc/nullable_return_types >>>> >>>> At least, it has up to date implementation. >>>> >>>> We discussed this internally 2-3 weeks ago, and my politeness (or/and >>>> stupidity) allowed you to pass your version for common discussion. >>>> Now I can see your real reason :( >>>> >>>> Both "Union Types" and "Nullable Types" may make sense, and both should >>>> be voted at the same time. >>>> Tomorrow is time to start voting. Right? >>>> >>>> Thanks. Dmitry. >>>> >>>> >>>> ________________________________________ >>>> From: Levi Morrison <morrison.l...@gmail.com> >>>> Sent: Tuesday, April 26, 2016 02:37 >>>> To: internals >>>> Subject: [PHP-DEV] [RFC] Patch for Union and Intersection Types >>>> >>>> Internals, >>>> >>>> Joe Watkins and Bob Weinand have worked out a [proof-of-concept patch >>>> for union types][1]. Please go download it and experiment with it. >>>> >>>> A few things to note: >>>> >>>> * This patch includes intersection types. However, a type expression >>>> must be either a union type or an intersection type; it doesn't >>>> support both such as `Array | (Countable & Traversable)`. >>>> * This patch adds `null`, `true` and `false` for type declarations. >>>> * This patch includes conversion rules for weak types. >>>> * It does not have short-hand for unions with null (`?Foo` being `Foo | >>>> Null`) >>>> >>>> These features (or omitted ones) are not necessarily what will be >>>> voted on. Rather this patch allows us to experiment with these >>>> features in code. This experience should be helpful for us to solidify >>>> how we actually feel about these features. >>>> >>>> I especially would like people to try out the conversion rules for >>>> scalar types as it has been a point of discussion. >>>> >>>> [1]: https://github.com/php/php-src/pull/1887 >>> >>> Hey Dmitry, >>> >>> Please, do not accuse us of blocking the nullables. This wasn't >>> intentional and rather a coincidence that we provided a patch right now. >>> First we wanted to concentrate our forces on getting a great 7.0 out >>> before starting this RFC (as it didn't make it in time for going into 7.0 >>> too as we waited for result on scalar types in general first). >>> Then, as you're aware Levi had absolutely no time for a few months… Now, >>> he has time to manage things and we could move ahead quickly and write the >>> patch up. >> >> I know, we all like to make our best for PHP. >> Sorry, if I was too emotional. >>> >>> I'd like to hold first a formal (and binding) vote on whether "null |" or >>> "?" should be used (in case both RFCs pass). Rushing things through right >>> now might just us ending up with semantics the vast majority dislikes. >> >> I didn't exactly get, what do you propose. One RFC with voting for >> "Nullable" or "Union"? >> >> Thanks. Dmitry. >> >>> >>> Thanks, >>> Bob > > I believe the intention here is to decide whether we do the short-hand > syntax for nullable types or only the long-form. I can understand the > rationale of not having both or at least dis-allowing the syntax to > mix them. For example, I don't think anyone really likes allowing > this: `?Array | Travsersable` as . > > However, if the union types RFC does not pass then it seems odd (to me > at least) to use the expression `Foo | Null` instead of `?Foo`, but I > know Bob would like the long-form in all cases, hence why he would > like a vote. Joe seems to just want nullables to have an outcome so it > is no longer blocking typed properties. > > Is that a correct summary, Bob and Joe?
Yeah, I'd like to not allow ?Foo in any case if union types pass. If they fail, ?Foo is fine for me. Bob