Re: Re: RFC Proposal: New assign value operator

From: Date: Wed, 27 Nov 2013 15:15:35 +0000
Subject: Re: Re: RFC Proposal: New assign value operator
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
I disagree. We don't need *yet another* assign operator while the
alternative already exists and isn't that bad.

    $money->setAmount(29.99);

is perfectly fine. Adding another assigning operator wouldn't make it more
readable but less, you're effectively creating magic.


On Wed, Nov 27, 2013 at 11:36 AM, Tom Oram <[email protected]> wrote:

> Hi everyone,
>
> I let this go before after getting a lot of friction to the idea but the
> more I think about the more I think it would be really useful.
>
> Since writing the original message I've been looking at golang and found
> that they have a := operation to infer type which is very similar to what I
> proposed.
>
> I'd like to try and start some discussion about this again as I think it
> would be very useful and really open up the possibility of having objects
> for primitive types.
>
> I shall try and think up some examples to show where I think this could be
> really useful and follow up this message with that shortly.
>
> Best regards to all,
> TOM
> On 25 Jun 2013 11:01, "Tom Oram" <[email protected]> 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
> >
> >
> > --
> > ****************************************************
> > PLEASE NOTE: For support requests please
> > use [email protected] instead of emailing
> > staff directly, this way your request is likely to
> > be dealt with more efficiently.
> > ****************************************************
> > Tom Oram - SCL Internet Services
> > PO Box 8, Cardigan, Ceredigion, SA41 3YA
> > Website: http://www.scl.co.uk/
> > Tel: +44 (0) 1239 622 411
> > Fax: +44 (0) 1239 622428
> > Company Reg. No. 2441708
> > ****************************************************
> >
>


Thread (19 messages)

« previous php.internals (#70441) next »