Whenever this operator would be used on such an object in a program, this function would be called with the lvalue and rvalue as parameters.
This same form of "extended copying" is also necessary for PHP's zval containers. Again, in the case of an array, this extended copying would imply re-creation of all hash table entries relating to this array. For strings, proper memory allocation would have to be assured, and so on.