Hi everyone, I had a chat with Levi yesterday about the operator overloading side of this RFC, and I'd like to try explain it as clearly as I can so that there is no confusion.
Using <=> spaceship operator as an example, the operator is like a pointer that references the internal `compare_function`. When you use the operator, it calls that function, which in turn does comparison tests and eventually calls object handlers when comparing objects. This RFC is not suggesting that we change the pointer of the operator, but instead adjust the behaviour of `compare_function`, which the operator already points to. Implementing `__compareTo` does affect the behaviour of the operator, but it doesn't overload it. If in the future we wanted to add proper operator overloading, there would be a function like `__spaceship` that directly overloads the operator to change its pointer to something else. If this was to happen, `__compareTo` would still be used by `compare_function`, and used internally when sorting or searching. I realise that the behaviour of the operator can be changed with `__compareTo`, and is therefore no different to operator overloading, but that's not how we should look at this. The reason why <=> normalises to -1,0,1 isn't because the operator dictates that - it's `compare_function` that does that, which is what the operator points to by default. I hope that helps to clear things up a bit. :) On Mon, 9 Jul 2018 at 13:57, Rudolf Theunissen <rudolf.theunis...@gmail.com> wrote: > Hi everyone, > > With no further discussion and no objection to start voting on this RFC, I > would like to move forward with the vote, which requires a 2/3 majority to > pass. > > *RFC*: https://wiki.php.net/rfc/object-comparison > > Discussions: > - https://externals.io/message/102337 > <https://externals.io/message/102389> (June 21) > - https://externals.io/message/102473 (June 26) > > The vote will be open until 2018-07-16. > > Thank you, > Rudi > >