【发布时间】:2021-03-25 03:13:46
【问题描述】:
PHP 7.4 的向后不兼容更改列表包含the following note:
序列化
o 序列化格式已被移除。由于它从未由 PHP 生成,这可能只会破坏手动制作的字符串的反序列化。
(注意这里指的是 little-o,而不是用于对象序列化的 big-O 格式。)
似乎这不是由 PHP 的 serialize() 函数生成的,但该注释的存在意味着它已被 unserialize() 函数识别。
我已经完成了little test fiddle (3v4l.org),这表明这不仅仅是 big-O 的同义词,这显然是一种可能性。
小提琴通过输出的错误消息中的差异公开了 PHP 中的更改。在 PHP >= 7.4 中,我们在位置 0(遇到 o)处收到错误,而在 7.4 之前,在位置 5(数据所在的位置)报告错误。这意味着o 已被识别,但数据格式错误,这与我在上面已经推断的内容相关。
那么,o 序列化格式是什么,它反序列化为什么,如果 PHP 本身没有实际生成它,为什么它支持这样的功能?
【问题讨论】:
-
@Caramiriel 不。我对那个页面很熟悉——它是关于 PHP 序列化内部的一个很好的资源——但它根本没有提到 little-
o符号。
标签: php php-internals language-history