Assuming this was intended for the list... On 12/11/2016 05:55 PM, Mathieu Rochette wrote:
Currently the only "unlocked context" for an object is its constructor. As discussed previously, that is insufficient. For any non-trivial object (more than 1-3 internal properties) creating a new one via the constructor only when incrementally building is prohibitively difficult. The pattern of with*() methods that spawn new objects via clone(), a la PSR-7, needs to be supported. That is:immutable class Money { // ... public function add(Money $other) : Money { $new = clone($this); $new->amount += $other->amount; return $new; } } I'm not sure how easily we can denote that sort of case. It's outside the __clone() function itself, which is what makes it difficult. Without that, though, such immutable objects are of only limited use.
As you said, it has been already been discussed that a method to build new altered object from an existing one could be improved. Different options were proposed but maybe it's better to start small to get this first part right and add this in another rfc ? having everything at the same time might makes the rfc more difficult to be accepted
On the contrary, an RFC that doesn't fully solve the issue at hand and leaves major gaps in place is a poor RFC, and I would expect to be justifiably voted down.
--Larry Garfield -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
