On Tue, Sep 3, 2024, at 13:24, Philip Hofstetter wrote: > Hello, > > As per my previous email to the list, I have now created the official RFC to > deprecate calling json_serialize() on instances of classes marked with > ZEND_ACC_NOT_SERIALIZABLE. > > https://wiki.php.net/rfc/deprecate-json_encode-nonserializable > > I have also created a PR with the implementation here: > > https://github.com/php/php-src/pull/15724 > > I have considered other options, both constraining the implementation to just > Generator and/or to add special cases for Generator (and maybe Iterator), but > they either continue to keep the asymmetry between serialize() and > json_encode() and/or are making things even more inconsistent. > > Please tell me what you think, especially, if you agree that > blanked-deprecating all of ZEND_ACC_NOT_SERIALIZABLE classes is acceptable > BC-wise (after a bit of deliberation over the weekend, I think it is and most > json-serializations of such marked classes are probably unintentional). > > Thanks in advance for all comments > > Philip > >
Hello Phillip. I think it would be good to list these non-serializable objects in the RFC. It doesn't have to be exhaustive, but the list includes throwables, weak-maps, weak-references, closures, fibers, etc. Some people may be relying on this behavior (and I'd be curious to know that use case myself). I just grepped for @not-serializable in php-src stubs, which appears to be the only use of ZEND_ACC_NOT_SERIALIZABLE. — Rob