Re: Re: What about a magic __toArray() method?
| From: | Andreas Heigl | Date: | Tue, 04 Feb 2020 07:26:44 +0000 |
| Subject: | Re: Re: What about a magic __toArray() method? | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-108355@lists.php.net to get a copy of this message | ||
Hey all.
Instead of adding more magic I personally like the approach of
explicitness more and your suggest adding an interface "Arrayable"
(naming is hard and this might not be the best name) instead. Whether
that interface then defines a
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc
__toArray()-method or something entirely
different is then a different matter.
Additionally this would be in line with Nicolas RFC regarding
"Stringable" (https://wiki.php.net/rfc/stringable)
Just my 0.02€
Cheers
Andreas
Am 04.02.20 um 08:18 schrieb Midori Koçak:
> Or we can deprecate __toString() method at all and detect cast events
> instead. Would it make more sense? Something like this __casted().
>
> P.S: I saw the previous conversation but hence now we have types, it would
> make sense.
>
> Midori
>
> On Tue, 4 Feb 2020 at 08:15, 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.
>>
>
--
,,,
(o o)
+---------------------------------------------------------ooO-(_)-Ooo-+
| Andreas Heigl |
| mailto:andreas@heigl.org N
50°22'59.5" E 08°23'58" |
| http://andreas.heigl.org http://hei.gl/wiFKy7 |
+---------------------------------------------------------------------+
| http://hei.gl/root-ca
|
+---------------------------------------------------------------------+
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc