2013/6/26 Robert Stoll <rst...@tutteli.ch> > 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 = new MoneyValue(); > $price := 29.99; > > Instead of writing something like: > $price = 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 = new MoneyValue(29.99); >
You forgot the currency ;) (without it a "money"-type is useless). But this leads to $price := 29.99; $price := 'USD'; I find it confusing. > > -----Ursprüngliche Nachricht----- > Von: Richard Quadling [mailto:rquadl...@gmail.com] > 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 <t...@scl.co.uk> 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 > > 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 > > implement this should it be accepted. > > > > What I want to propose is a new assignment operator which rather than > > 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 > > aka assignment operator overloading via a magic method (prehaps called > > __assign). > > > > Here is an example ( for now I will use the PASCAL style assignment > > operator := as the new operator as it is a know assignment operator > > and currently not used in PHP): > > > > // For a class defined like so... > > class MoneyValue > > { > > protected $amount; > > > > public function __assign($value) > > { > > $this->amount = $value; > > } > > } > > > > // The amount could then be assigned using the new operator like this > > > > $price = new MoneyValue(); > > > > $price := 29.99; > > > > While the primary focus would be for assignment operator overloading > > as I just displayed in the previous example, for consistency it could > > be used with scalar values to preserve type like so: > > > > // $str is now a string > > > > $str = 'Original String'; > > > > // Using the new assignment variable would cast the value being > > assigned to the variable's type // (in this case a string). So > > > > $str := 7; > > > > // Would be the equivalent to > > // > > // $str = (string) 7; > > // > > // $str === "7" > > > > > > Another quick example: > > > > $num = 5; > > > > $num := '12'; > > > > // Equivalent to > > // > > // $num = (int) '12'; > > // > > // $num === 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 = 8; > $num := "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 > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- github.com/KingCrunch