欢迎光临散文网 会员登陆 & 注册

【闲扯】PHP Serializable接口

2023-04-11 21:39 作者:J_Chanra  | 我要投稿

偶然在网上看到了个php序列化的问题。序列化的结果为什么是"C:"而不是"O:":

先说"C:"开头的意思,我暂且叫他C格式(C format)

chatgpt3.5给出的解释是:序列化时,使用Class serializer产生的结果是C格式。

反之,如果序列化时,使用Object serializer产生的结果是O格式。

但是根据他提供的demo并不能生成C格式的结果。

个人认为C格式的意思应该是Customized serializing

经过尝试,最后通过Serializable接口生成C格式结果。

The Serializable interface

php官方文档解释:

用来自定义序列化的接口,php提供了serializable接口,以实现更加细微的控制(fine-grained control)

当我们对一个对象设置了自定义序列化,那么该对象序列化后的结果就是C格式。官方给我们举了一个例子:

在这个例子中,重新定义了serialize和unserialize方法,再使用serialize,只对data的值进行了序列化,实现了更加细微的控制(fine-grained control)。

更多姿势参考:https://www.php.net/manual/en/class.serializable.php

【闲扯】PHP Serializable接口的评论 (共 条)

分享到微博请遵守国家法律