Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:67856 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 391 invoked from network); 26 Jun 2013 11:54:09 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 26 Jun 2013 11:54:09 -0000 Authentication-Results: pb1.pair.com header.from=rstoll@tutteli.ch; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=rstoll@tutteli.ch; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain tutteli.ch designates 80.74.154.78 as permitted sender) X-PHP-List-Original-Sender: rstoll@tutteli.ch X-Host-Fingerprint: 80.74.154.78 ns73.kreativmedia.ch Linux 2.6 Received: from [80.74.154.78] ([80.74.154.78:37904] helo=hyperion.kreativmedia.ch) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id C6/03-18025-E56DAC15 for ; Wed, 26 Jun 2013 07:54:08 -0400 Received: (qmail 4904 invoked from network); 26 Jun 2013 13:54:03 +0200 Received: from 99-206.5-85.cust.bluewin.ch (HELO RoLaptop) (85.5.206.99) by ns73.kreativmedia.ch with (AES128-SHA encrypted) SMTP; 26 Jun 2013 13:54:03 +0200 To: , "'Tom Oram'" Cc: "'PHP internals'" References: In-Reply-To: Date: Wed, 26 Jun 2013 13:54:02 +0200 Message-ID: <001b01ce7263$da79fec0$8f6dfc40$@tutteli.ch> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 14.0 Thread-Index: AQJSSTh9my3sbZMhkjrVJdXZGpMLSwEm5OrRmDb8ftA= Content-Language: de-ch Subject: AW: [PHP-DEV] RFC Proposal: New assign value operator From: rstoll@tutteli.ch ("Robert Stoll") As far as I see it, it is kind of an operator overload mechanism for the = assign operator. This can be useful for small utility classes such as Money, Email etc. An example was given: $price =3D new MoneyValue(); $price :=3D 29.99; Instead of writing something like: $price =3D new MoneyValue(); $price->setPrice(29.99); The benefit is small, but can lead to better readable code. But since it = is only for the assign operator and not for + - etc., for me the = question remains open why not writing something like this directly: $price =3D new MoneyValue(29.99); -----Urspr=C3=BCngliche Nachricht----- Von: Richard Quadling [mailto:rquadling@gmail.com]=20 Gesendet: Mittwoch, 26. Juni 2013 12:51 An: Tom Oram Cc: PHP internals Betreff: Re: [PHP-DEV] RFC Proposal: New assign value operator On 25 June 2013 11:01, Tom Oram wrote: > Hi everyone, > > I've got an idea for an RFC proposal and from reading the instructions = > it looks like I should run it past you guys first. > > I have not made any contributions to PHP before although I have made=20 > some custom modifications in house in the past and while I'm no longer = > familiar with the PHP code base I am confident I have the skills to=20 > implement this should it be accepted. > > What I want to propose is a new assignment operator which rather than=20 > setting the variable to completely new value it would update the value = > while maintaining the type. > > The main motivation for this is for easy assignment to value objects=20 > aka assignment operator overloading via a magic method (prehaps called = > __assign). > > Here is an example ( for now I will use the PASCAL style assignment=20 > operator :=3D as the new operator as it is a know assignment operator=20 > and currently not used in PHP): > > // For a class defined like so... > class MoneyValue > { > protected $amount; > > public function __assign($value) > { > $this->amount =3D $value; > } > } > > // The amount could then be assigned using the new operator like this > > $price =3D new MoneyValue(); > > $price :=3D 29.99; > > While the primary focus would be for assignment operator overloading=20 > as I just displayed in the previous example, for consistency it could=20 > be used with scalar values to preserve type like so: > > // $str is now a string > > $str =3D 'Original String'; > > // Using the new assignment variable would cast the value being=20 > assigned to the variable's type // (in this case a string). So > > $str :=3D 7; > > // Would be the equivalent to > // > // $str =3D (string) 7; > // > // $str =3D=3D=3D "7" > > > Another quick example: > > $num =3D 5; > > $num :=3D '12'; > > // Equivalent to > // > // $num =3D (int) '12'; > // > // $num =3D=3D=3D 12; > > So what do you guys think? > > If I get a good response I'll look into how to create a proper RFC and = > start trying to work out how to implement it. > > Many thanks and look forward to some responses, Tom > Hi. I'm not going to comment on the merits as such, but I'd be interested in = knowing what problem this RFC would solve? Considering PHP has type juggling scalars, it would SEEM (I may have = missed the point) that this could result in data loss when the enforced = conversion results in 0/False/"". $num =3D 8; $num :=3D "data from user"; // 0 Unless that is the expected behaviour. Where would this RFC change be used? And having said all of that, I'm not against it, just want to see what = it would be useful for that isn't already part of PHP's toolbox. -- Richard Quadling Twitter : @RQuadling EE : http://e-e.com/M_248814.html Zend : http://bit.ly/9O8vFY