Re: What about a magic __toArray() method?
| From: | Marco Pivetta | Date: | Tue, 04 Feb 2020 10:30:48 +0000 |
| Subject: | Re: What about a magic __toArray() method? | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-108358@lists.php.net to get a copy of this message | ||
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 <mtkocak@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.
>