Marco, I've read it and your argument is strong. I think my opinion slightly moves towards Andreas, away from magic.
here is something I wrote some days ago: https://github.com/midorikocak/arraytools/blob/master/src/ArrayConvertableTrait.php I guess you were saying something like this would be enough. Midori On Tue, 4 Feb 2020 at 11:31, Marco Pivetta <ocram...@gmail.com> wrote: > Hey Midori, > > This has been discussed in more depth 2 years ago: > https://externals.io/message/98539#98539 > > In practice, the `(array)` cast is one of the few operations that don't > cause observable side-effects in this programming language: let's please > keep it as such. > > Marco Pivetta > > http://twitter.com/Ocramius > > http://ocramius.github.com/ > > > On Tue, Feb 4, 2020 at 8:15 AM Midori Koçak <mtko...@gmail.com> wrote: > >> As you know we have __toString method that runs whenever an object is >> typecasted to string or it is directly echoed. >> >> <?php >> >> $class = (new class{ >> public function __toString(){ >> echo "casted\n"; >> return "mahmut\n"; >> } >> }); >> >> echo $class; >> $casted = (string)$class; >> >> /* >> prints: >> casted >> mahmut >> casted >> mahmut >> */ >> >> >> As you know toArray() method implemented when an object is converted into >> and array and most of the time when a plain data object is sent to >> front-end. >> >> Having a magic method like __toString called __toArray would be useful to >> detect and act on conversion events. >> >> Roughly it would be like: >> >> <?php >> >> $class = (new class{ >> public function __toArray(){ >> echo "casted\n"; >> return >> [ >> 'key'=>'value' >> ]; >> } >> }); >> >> >> $casted = (array)$class; >> print_r($casted); >> >> /* >> prints: >> Array >> ( >> [key] => value >> ) >> mahmut >> */ >> >> What would you think? I think it would add value. >> >