On Thursday, March 26, 2020 3:50 AM Jakob Givoni <ja...@givoni.dk> wrote:

> On Wed, Mar 25, 2020 at 6:28 AM Christoph M. Becker <cmbecke...@gmx.de> wrote:
>
>> It seems to me that the RFC is not sufficiently specific enough 
>> regarding the concatenation of instances of classes which implement 
>> __toString().
>
> Exactly what I was thinking too. Would be nice with some examples on this.

I am not sure if I can (or should) still add this to the RFC, here some 
clarification on this:

The overloaded concat operator has higher priority than the __toString() method.
So if Class A overloades the concat operator, then calling $a . $b means 
ClassA::__concat($a, $b);  (Note that both operands are passed in their 
original form)
If you want to concat the string representations, you will have to explicitly 
convert the objects to strings: 
        $ret = (string) $a . (string) $b;

If the concat operator is not overloaded, the behavior is like now, and the 
objects are converted implicitly to strings (so $a . $b actually means (string) 
$a . (string) $b).
Furthermore an notice is triggered, hinting the user that he could overload the 
concat operator. (Maybe here a different message than for the other operators 
would be useful).

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to