Re: Re: [VOTE] New custom object serialization mechanism
| From: | Benjamin Morel | Date: | Sun, 07 Apr 2019 12:55:21 +0000 |
| Subject: | Re: Re: [VOTE] New custom object serialization mechanism | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-105132@lists.php.net to get a copy of this message | ||
Thanks for bringing this new serialization method to PHP 7.4, Nikita!
It would be nice if we could make this reusable beyond serialization. There
> are two caveats that come to mind:
> (...)
> The __unserialize() method assumes an already constructed object on
> which __unserialize() can be called, which we need due to the peculiar
> limitations of serialization in PHP, but which is probably not very
> convenient for other purposes, where the approach of __set_state() is more
> useful.
I actually started working on a replacement for var_export(), that makes
use of __serialize() and __unserialize() methods when available, to
reconstruct an object:
https://github.com/brick/varexporter
It turns out that it works pretty well, here is an example output for an
object that implements these methods:
(static function() {
$class = new \ReflectionClass(\My\CustomClass::class);
$object = $class->newInstanceWithoutConstructor();
$object->__unserialize([
'foo' => 'Test',
'bar' => 1234
]);
return $object;
})()
And the good thing is, it can use these methods right now, without waiting
for PHP 7.4.
Feedback welcome!
Ben
On Thu, 21 Mar 2019 at 15:20, Nikita Popov <nikita.ppv@gmail.com> wrote:
> On Fri, Mar 1, 2019 at 4:08 PM Nikita Popov <nikita.ppv@gmail.com> wrote:
>
> > Hi internals,
> >
> > I have opened voting on
> > https://wiki.php.net/rfc/custom_object_serialization. The
> > vote will be
> > open until 2019-03-15.
> >
> > You can find the discussion thread for this proposal here:
> > https://externals.io/message/103823
> >
> > Regards,
> > Nikita
> >
>
> Vote closed a bit late here ... the RFC is accepted with 20 votes in favor
> and 7 against.
>
> Regarding deprecation, I think I will target this at PHP 8. The new
> mechanism will be there for the people who are running into the limits of
> the existing one, but we probably don't need everybody to switch over right
> this minute just yet.
>
> Regards,
> Nikita
>