Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:93496 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 51765 invoked from network); 25 May 2016 08:30:20 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 May 2016 08:30:20 -0000 Authentication-Results: pb1.pair.com smtp.mail=pthreads@pthreads.org; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=pthreads@pthreads.org; sender-id=unknown Received-SPF: error (pb1.pair.com: domain pthreads.org from 209.85.161.181 cause and error) X-PHP-List-Original-Sender: pthreads@pthreads.org X-Host-Fingerprint: 209.85.161.181 mail-yw0-f181.google.com Received: from [209.85.161.181] ([209.85.161.181:32931] helo=mail-yw0-f181.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 73/83-17017-A9265475 for ; Wed, 25 May 2016 04:30:18 -0400 Received: by mail-yw0-f181.google.com with SMTP id h19so40703117ywc.0 for ; Wed, 25 May 2016 01:30:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pthreads-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=HkY+FC1bvHuIL0kVz7SRx2ybBeJF6hGQDFvekke+9Rk=; b=J45jl3Ozg2fYX1iAwlCd1KBnlKn73sU5hPXlFEUwsndH0CCh8nyJQwjG+WZ6pPtAej IJzxM3OmdbB/lnh+JkgeZx4wi/HDSFC2U4AgC4RxmU5/Z/FZ+UXGwzdsMxAXh0uoC1fh BhPmFGIKj3fhpvyukxnl8Pzi1VDZBZdCapCKGz+SH6G7uC5Y++eRtmb9LDj1ohWZD73e VPzjz2PU9VHRIAg2esR6R5NiQJCdco0Jl7aKZ5oDwnh4wRE2msu5XHFQMfP68R++utOS fo3ZFGgwLwSG6KReSfKU3FE7hrL6bsZcEZc7aykjE0pgtcIgSn6388WrDs3300mTj6uJ rrEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=HkY+FC1bvHuIL0kVz7SRx2ybBeJF6hGQDFvekke+9Rk=; b=YWXoAzYrIxFYs+FVkqYT4BWnmsdrsyITBZcSsDa4aZRMbyzGOsnPu4iAoDmHO2o8Sx GJENhXPuubuR83EBWQaWpKQQtVdKZ4RGYqfobLVW6gsME3ycUFUQGi4QxYbugKAOSpZW 9IhzvgRG/A88rCyFT7r01fz2mLLBsf2HLX5ilXfNmgIGFPuXz4UnlfDN6HZBTuZ8GM0l szBqQFiyd2tVtWrMt2uRHm90FzH+EookGq/iC541sxAvIEsRCZvDRco50uk6NDJfdkae NUFt2TMViftkx0iAtaba27sQqGN25wJP/EUEtUaVuL3t7NyZsUiIYlPfvO1GWmau+zAo 2NlQ== X-Gm-Message-State: ALyK8tJwaxNbIEWQY08+vwVppNMzX9JnjBLikvCougGtzJr8BYOOht+3Kw5jUsQm/Qzku9q0pFhAhI3KNXU13g== MIME-Version: 1.0 X-Received: by 10.37.198.13 with SMTP id k13mr1412365ybf.127.1464165015307; Wed, 25 May 2016 01:30:15 -0700 (PDT) Received: by 10.129.109.67 with HTTP; Wed, 25 May 2016 01:30:15 -0700 (PDT) X-Originating-IP: [109.157.60.67] In-Reply-To: References: Date: Wed, 25 May 2016 09:30:15 +0100 Message-ID: To: Dmitry Stogov Cc: PHP internals , Phil Sturgeon , Bob Weinand Content-Type: multipart/alternative; boundary=94eb2c08cacea186720533a67b28 Subject: Re: [PHP-DEV] [RFC][Vote] Typed Properties From: pthreads@pthreads.org (Joe Watkins) --94eb2c08cacea186720533a67b28 Content-Type: text/plain; charset=UTF-8 Morning Dmitry, > I made this check(s) to be invariant. You may like to do this differently... I think this is what everyone expects, isn't it ? I did omit to mention that part ... > RFC doesn't define how uninitialized nullable typed properties should behave. It does: > *Nullable typed properties will not raise an exception when accessed before initialization.* It's the only bold text in the document :) It seems correct to me; We raise uninitialized exceptions to prohibit the return of null to user land, for nullable properties we don't need to do that. It does mean that ?int $foo; has an implicit default value of null, but I can't see anything wrong with that, for a nullable property. I'm open to being persuaded that is wrong. I will review comments and current patch this morning ... Cheers Joe On Wed, May 25, 2016 at 8:06 AM, Dmitry Stogov wrote: > > > On 05/25/2016 09:06 AM, Joe Watkins wrote: > > Morning Dmitry, > > There's no section for nullables, but there is mention of them, > specifically in relation to your query: > > > While parameters allow null to be accepted as the default value, null > is only a valid value for nullable properties. > > Is there something wrong with that rule ? > > > It's OK. This just should be defined and it's defined in RFC (I missed) > > > Having explicit nullability means the declaration tells you all you > need to know, all the time. > > Being able to set null any typed property means you can never be sure > of the type; You can't tell by looking at the declaration what type the > variable will be because anything is allowed to set it null. > > We waited for explicit nullability to avoid this. > > You'll have to have a really good reason for me to change that rule :) > > > Inheritance rules for typed nullable properties are also missed. > > That's true, but shouldn't they use the same rules as nullable > parameters, will discussion change how they should work ? > > I made this check(s) to be invariant. You may like to do this > differently... > It's better to define this in RFC, check implementation and add tests. > > > > but still have unsolved problems. > > If you have discussed these somewhere, can you send/show the transcript > ? (I missed all comms after yesterday morning, due to illness). > > > We are working with Bob, trying to improve the patch. I added new tests > fixing the problems, and also added few comments o github. > > > If it emerges that the RFC needs to be modified heavily, then I'm happy > to stop the voting. > > > RFC doesn't define how uninitialized nullable typed properties should > behave. > > class C { > public $a; > public int $b; > public ?int $c; > } > $obj = new C; > var_dump($obj->a); // NULL > var_dump($obj->b); // throw Error("") > var_dump($obj->c); // first or second??? (currently throw Error("")). > $obj->$a = null; > $obj->$b = null; // throw Error("") > $obj->$c = null; > var_dump($obj->a); // NULL > var_dump($obj->b); // throw Error("") > var_dump($obj->c); // NULL > unset($obj->$a); > unset($obj->$b); > unset($obj->$c); > var_dump($obj->a); // notice + NULL > var_dump($obj->b); // throw Error("") > var_dump($obj->c); // first or second??? (currently throw Error("")). > > This should be defined. > > > > But, so far, we haven't actually deviated from the RFC, only changed > implementation details that are not part of the design of the feature. > > > I'm not so sure. > Anyway, I hope you are better and we will able to speak today or tomorrow. > > Thanks. Dmitry. > > > > Sorry if it seems like I'm missing information, I don't know what you > and Bob found out yet ... > > I super appreciate you guys working on it, obviously. Thanks for that :) > > Cheers > Joe > > On Tue, May 24, 2016 at 8:04 PM, Dmitry Stogov wrote: > >> Hi Joe, >> >> I've add implementation for nullable typed properties (as they fit into >> the patch design), but RFC missed any description of nullable properties. >> See tests Zend/tests/type_declarations/typed_properties_047.phpt, >> Zend/tests/type_declarations/typed_properties_048.phpt, >> Zend/tests/type_declarations/typed_properties_049.phpt >> >> I'm not sure, if this is what the voters expect. At least I don't like >> the facts that "?int $foo;" declares uninitialized property; "?int $foo = >> NULL" may be unset() and became uninitialized; and it's an open question if >> "int $foo = NULL;" should be supported as nullable. Inheritance rules for >> typed nullable properties are also missed. >> >> Personally, I think the RFC was moved into voting state too early >> (without good enough implementation, and with missing topics). >> The current implementation is better (performance penalty reduced to >> ~2%), but still have unsolved problems. >> >> May be it's better to cancel voting, solve problems, finish the >> implementation and add missing questions into RFC... >> I'm going to help with implementation in any case, but we should agree on >> what we are doing. >> >> Thanks. Dmitry. >> >> ________________________________________ >> From: Joe Watkins >> Sent: Friday, May 20, 2016 9:05:34 AM >> To: PHP internals; Phil Sturgeon >> Subject: [PHP-DEV] [RFC][Vote] Typed Properties >> >> Morning internals, >> >> Since we have our answer on nullable types, typed properties can now >> go >> to vote. >> >> https://wiki.php.net/rfc/typed-properties#vote >> >> Note that, support for nullability as RFC'd will be merged when the >> implementation for nullable_types is merged into master. >> >> Please participate. >> >> Cheers >> Joe >> > > > --94eb2c08cacea186720533a67b28--