Re: RFC Proposal: New assign value operator
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)