Le Tue, 23 Mar 2021 17:01:40 +0100,
Nicolas Grekas <nicolas.grekas+...@gmail.com> a écrit :
> Picking up a loose thread:
> > https://wiki.php.net/rfc/custom_object_serialization introduced a
> > replacement for Serializable in PHP 7.4, so it's time to think about
> > deprecating and removing the old mechanism:
> >
> > https://wiki.php.net/rfc/phase_out_serializable
> >
> > This RFC follows a rather conversative approach. In PHP 8.1 there will be a
> > deprecation warning if Serializable is implemented without also
> > implementing __serialize() and __unserialize(). In PHP 9.0, support for
> > Serializable is dropped internally, and only the interface retained. In PHP
> > 10.0 the interface is dropped as well.
> >  

It is not clear neither in https://wiki.php.net/rfc/custom_object_serialization
 nor in the documentation if it is possible to call parent::__serialize() to
 only add a few fields to serialization.

Is this legal/correct/useful:

public __serialize ( ) : array
{
  $data = parent::__serialize();
  $data['specialField'] = $data['special']->complicatedStuff();
  unset($data['special']);
  return $data;
}

public __unserialize ( array $data ) : void
{
  $data['special'] = new SpecialComplicatedThing($data['specialField']);
  unset($data['specialField']);
  parent::__unserialize($data);
}

(And as I understand it, it means declaring __unserialize to do something after
parent::__unserialize() would be the same as declaring __wakeup?)

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to