本帖最后由 小鲁哥哥 于 2017-10-12 17:12 编辑
【黑马程序员济南】PHP类其他魔术方法 序列化: 就是将一个变量的“内存数据形式”,转换为“硬盘数据形式”的过程。
分2步就可以: 1,$str = serialize( $变量 ); //该函数将该变量数据,转换为一个字符串 2,file_put_contents(“文本文件名”, $str ); //将该字符串保存到该文件中。 [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
//演示3中数据的序列化结果
class A{
public $p1 = 1;
protected $p2 = 2;
private $p3 = 3;
}
$data1 = 1.1;
$data2 = array('aa',5=>5.5,'bbcc'=>true);
$data3 = new A();
//开始转换得到一个字符串
$str1 = serialize($data1);
$str2 = serialize($data2);
$str3 = serialize($data3);
//开始写入硬盘中
file_put_contents('./file1.txt',$str1);
file_put_contents('./file2.txt',$str2);
file_put_contents('./file3.txt',$str3);
[align=left] 反序列化: 将已经存到硬盘的变量数据,转换(恢复)到内存数据(变量)形式的过程。 同样分2步: 1,$str = file_get_contents(文本文件名); //读取出序列化之后所存储的文件内容(就是字符串) 2,$变量 = unserialize( $str ); //将该字符串恢复为变量(数据); [PHP] 纯文本查看 复制代码 <?php[/align]/*黑马程序员济南中心出品*/
//演示3中数据的序列化结果
class A{
public $p1 = 1;
protected $p2 = 2;
private $p3 = 3;
}
//开始从硬盘中读取数据(字符串)
$str1 = file_get_contents('./file1.txt');
$str2 = file_get_contents('./file2.txt');
$str3 = file_get_contents('./file3.txt');
//开始转换得到一个字符串
$data1 = unserialize($str1);
$data2 = unserialize($str2);
$data3 = unserialize($str3);
var_dump($data1);
var_dump($data2);
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] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
class A{
public $p1 = 1;
protected $p2 = 2;
private $p3 = 3;
static $p4 = 4;
function __sleep(){
//当然,这里也可以做些其他的。。。。
return array(“p1”, “p3”); //这里,就相当于只选择了p1,p3的数据进行“存盘”
//p2属性的数据被放弃了
//p4的属性根本就不能序列
}
}
__wakeup()
该魔术方法是对一个对象进行“反序列化”的时候,会被自动调用。 此时,该对象的属性值,就会恢复到“原来的数据” 但:如果某个属性当时并没有做序列化,则此时就不会恢复为原来对象的数据,而是恢复为该类中的初始数据; [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
class A{
public $p1 = 1;
protected $p2 = 2;
private $p3 = 3;
static $p4 = 4;
function __construct($p1,$p2,$p3){
$this->p1 = $p1;
$this->p2 = $p2;
$this->p3 = $p3;
}
function __sleep(){
return array("p1","p3");
}
function __wakeup(){
echo "对象苏醒了。。。";
}
}
$s1 = new S(11,12,13);
$str = serialize($s1);
var_dump($)
[align=left] 不知道大家对今天讲的PHP类其他魔术方法相关技术学习的怎么样啊?有什么疑问欢迎来黑马程序员济南中心来咨询哟~
点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈
|