反序列化
反序列化
序列化
- 游戏的存档【把当前的状态进行存储】
- 序列化和类是捆绑的
函数
serialize()
代码
<?php
show_source(__FILE__);
class chybeta{
var $test = '123';
}
$chybeta = new chybeta;
$chybeta_ser = serialize($chybeta);
echo "<br>";
print_r($chybeta_ser);
?>
- 输出
O:7:"chybeta":1:{s:4:"test";s:3:"123";}
O:7:"chybeta":1:{s:4:"test";s:3:"123";}
O:表示是一个Object对象,调用什么类
7:表示当前对象的长度是7个字符串
chybeta:表示当前对象的名字
1:只有一个值
s:字符串类型
4:表示变量的长度
test:表示变量的名字
s:表示值的类型
3:表示值的长度
123:表示值
反序列化
- 游戏的读档【恢复当时的状态】
函数
unserialize()
代码
<?php
show_source(__FILE__);
class chybeta{
var $test = '123';
}
$test = 'O:7:"chybeta":1:{s:4:"test";s:3:"123";}';
$a = unserialize($test);
echo "<br>";
var_dump($a);
?>
- 输出
object(chybeta)#1 (1) { ["test"]=> string(3) "123" }
object(chybeta)#1 (1) { ["test"]=> string(3) "123" }
得到了一个chybeta的类,里面有个test的变量,值是字符串123
魔术方法
什么是方法
- 方法是类中特有的,其实就是函数的意思,如同你叫小明,和你叫XIAOMING是一样的
什么是魔术方法
-
魔术方法就是一个机关,满足特定的条件就会自动触发
-
常见的魔术方法
__wakeup() //使用unserialize时触发 __sleep() //使用serialize时触发 __construct() //创建对象时触发 __destruct() //对象被销毁时触发 __call() //在对象上下文中调用不可访问的方法时触发 __callStatic() //在静态上下文中调用不可访问的方法时触发 __get() //用于从不可访问的属性读取数据 __set() //用于将数据写入不可访问的属性 __isset() //在不可访问的属性上调用isset()或empty()触发 __unset() //在不可访问的属性上使用unset()时触发 __toString() //把类当作字符串使用时触发 __invoke() //当脚本尝试将对象调用为函数时触发

浙公网安备 33010602011771号