> On Thu, Mar 26, 2020 at 5:37 PM email@example.com> wrote:
>> 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;
> This first part seems legit to me.
>> 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).
> I fear that "hint" notice could break Symfony apps... Couldn't you
> just not trigger it in this case?
Either that (it's what I would prefer), or clearly document that BC
break (even if it's just about a notice).