php中客户端向服务端传输对象数据

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/raoxiaoya/article/details/100183799

在实际应用中,我们通过 http, https, tcp, udp, unix socket 等来传输数据,基本都是传输字符串,二进制数据,那么可不可以传递对象呢,答案是肯定的。

主要函数:序列化和反序列化
1、serialize ( mixed $value ) : string
产生一个可存储的值的表示,可处理除了 resource 之外的任何类型,有利于存储或传递,于是对象和数组就可以作为字符串操作了,对象序列化后的字符串只保留了对象的属性和名字。

2、unserialize ( string $str ) : mixed
从已存储的表示中创建 PHP 的值,在反序列化之前需要先加载对象的类,否则是__PHP_Incomplete_Class,且无法调用对象的属性和方法。unserialize 方法会参照加载的名称相同的类来解析出对象,如果两边加载的是同名的但内容不同的类,那解析后的对象方法为自己加载的类的方法,属性为两边属性的合并。

示例:服务端A和客户端B通过socket-tcp通讯

1、当传输的对象的类在A和B上都已被加载
服务端
在这里插入图片描述
客户端
在这里插入图片描述
客户端的输出
在这里插入图片描述
并且可以操作这个对象

2、反序列化一个未加载的对象
在这里插入图片描述
操作该类会报错

猜你喜欢

转载自blog.csdn.net/raoxiaoya/article/details/100183799