黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法_黑马程序员php笔记
黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员php笔记”。
【黑马程序员济南】PHP类其他魔术方法
序列化:
就是将一个变量的“内存数据形式”,转换为“硬盘数据形式”的过程。
分2步就可以:
1,$str = serialize($变量);//该函数将该变量数据,转换为一个字符串
2,file_put_contents(“文本文件名”, $str);//将该字符串保存到该文件中。[PHP] 纯文本查看 复制代码 ? 01 5.5,'bbcc'=>true);13 $data3 = new A();
黑马程序员济南中心 编著//开始转换得到一个字符串 16 $str1 = serialize($data1);17 $str2 = serialize($data2);18 $str3 = serialize($data3);19 //开始写入硬盘中file_put_contents('./file1.txt',$str1);22 file_put_contents('./file2.txt',$str2);23 file_put_contents('./file3.txt',$str3);24
[align=left] 反序列化:
将已经存到硬盘的变量数据,转换(恢复)到内存数据(变量)形式的过程。同样分2步:
1,$str = file_get_contents(文本文件名);
//读取出序列化之后所存储的文件内容(就是字符串)
2,$变量 = unserialize($str);
//将该字符串恢复为变量(数据);
[PHP] 纯文本查看 复制代码 ? 01
黑马程序员济南中心 编著
02 //演示3中数据的序列化结果 03 cla A{ 04 public $p1 = 1;05 protected $p2 = 2;06 private $p3 = 3;07 } 08
09 //开始从硬盘中读取数据(字符串)10 $str1 = file_get_contents('./file1.txt');11 $str2 = file_get_contents('./file2.txt');12 $str3 = file_get_contents('./file3.txt');13 //开始转换得到一个字符串 15 $data1 = unserialize($str1);16 $data2 = unserialize($str2);17 $data3 = unserialize($str3);18 var_dump($data1);20 var_dump($data2);21 var_dump($data3);结果为: float(1.1)
黑马程序员济南中心 编著
array(3){[0]=>string(2)“aa” [5]=>float(5.5)[“bbcc”]=>bool(true)} object(A)#1(3){[“p1”]=>int(1)[“p2”:protected]=>int(2)[“p3”:“A”:private]=>int(3)} __sleep():
该魔术方法是对一个对象进行“序列化”的时候,会被自动调用。
此时,在该方法中,我们就可以(而且必须)返回一个数组,该数组中含所有我们“想要”对该对象的属性进行序列化的属性名。[PHP] 纯文本查看 复制代码 ? 01
黑马程序员济南中心 编著}
__wakeup()
该魔术方法是对一个对象进行“反序列化”的时候,会被自动调用。
此时,该对象的属性值,就会恢复到“原来的数据”
但:如果某个属性当时并没有做序列化,则此时就不会恢复为原来对象的数据,而是恢复为该类中的初始数据; [PHP] 纯文本查看 复制代码 ? 01
黑马程序员济南中心 编著 $this->p1 = $p1;13 $this->p2 = $p2;14 $this->p3 = $p3;15 } 16 function __sleep(){ 17 return 18 array(“p1”,“p3”);19 } 20 function 21 __wakeup(){ 22 echo “对象苏醒23 了。。”;24 } 25 } 26
$s1 = new S(11,12,13);$str = serialize($s1);var_dump($)
[align=left]
黑马程序员济南中心 编著
不知道大家对今天讲的PHP类其他魔术方法相关技术学习的怎么样啊?有什么疑问欢迎来黑马程序员济南中心来咨询哟~
黑马程序员济南中心 编著