Heim >Backend-Entwicklung >PHP-Tutorial >PHP核心技术与最佳实践之对象的序列化

PHP核心技术与最佳实践之对象的序列化

WBOY
WBOYOriginal
2016-06-23 13:36:43815Durchsuche

PHP核心技术与最佳实践之对象的序列化

对象是一堆数据,可以把对象存储起来,以便需要时使用,这就是对象的序列化。

       所谓序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。下面代码实现了把内存中的对象当前状态保存到一个文件中。

$str = serialize($student);

Echo $str;

File_put_contents(‘store.txt’,$str);

输出序列化后的结果:
O:6:”person”:2:{s:4:”name”;s:3:”Tom”;s:6:”gender”;s:4:”mail”;}

在需要时,反序列化取出这个对象:

$str = file_get_contents(‘store.txt’);

$student =unserialize($str);

$student->say();

注意:在序列化和反序列化时都需要包含类的对象的定义,不然有可能出现在反序列化对象时,找不到该对象的类的定义,而返回不正确的结果。

       可以看到,对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的集合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码。

拓展:serialize/unserialize是PHP自带的序列化函数,但是这组函数序列化时会产生无用的信息,如字符串长度,造成空间的无为浪费。

__toString()也是一种序列化。其中实现自己的序列化和反序列化,json_encode/json_decode是一个不错的选择。

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn