On Tue, Feb 4, 2020, 14:36 Benjamin Eberlei <kont...@beberlei.de> wrote:

>
>
> On Tue, Feb 4, 2020 at 2:10 PM Marco Pivetta <ocram...@gmail.com> wrote:
>
>> Linking (again) previous discussions:
>> https://externals.io/message/98539#98539
>>
>> `__toArray` as a magic function call when `(array)` cast happen is a bad
>> idea: it is a BC break, and it removes one of the very few interactions
>> (with objects) that didn't cause any side-effects (
>> https://externals.io/message/98539#98545,
>> https://externals.io/message/98539#98567)
>>
>
> I think we can't classify it as BC break, because no existing code
> implements __toArray at the moment, and hence it will not fail when this
> feature is introduced and code gets upgraded to newer versions.
>

It is a BC break because it changes the semantic of `(array) $object`: the
operation is no longer stable between two versions of the language.

Code relying on `(array)` behaviour (stable) requires additional reflection
wrappers to check if `$object` is **not** implementing `__toArray`, and
then the operation can be safely used (or an exception is to be thrown).

You can most certainly make a new operation, such as `(toArray) $object`:
the cast operator is new and isn't changing any existing behaviour.

Reply via email to