Re: Re: RFC Proposal: New assign value operator
On Wed, Nov 27, 2013 at 8:15 AM, Madara Uchiha <[email protected]> wrote:
> I disagree. We don't need *yet another* assign operator while the
> alternative already exists and isn't that bad.
>
> $money->setAmount(29.99);
>
Or you could even do (though I don't personally):
$money->amount = 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)