博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端学PHP之面向对象系列第五篇——对象操作
阅读量:6806 次
发布时间:2019-06-26

本文共 2794 字,大约阅读时间需要 9 分钟。

前面的话

  本文主要介绍面向对象中的一些对象操作

 

对象克隆

  对象复制,又叫对象克隆,可以通过 clone 关键字来完成

  在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象A时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本

name= $name; $this->sex = $sex; $this->age = $age; } function say(){ echo "我的名字:" .$this->name.",性别:".$this->sex.",年龄:".$this->age."
"; } } $p1 = new Person('张三','男','20'); $p2 = clone $p1; $p1->say();//我的名字:张三,性别:男,年龄:20 $p2->say();//我的名字:张三,性别:男,年龄:20?>

 

对象比较

  当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等

  而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)

flag = $flag; }}class OtherFlag{ public $flag; function OtherFlag($flag = true) { $this->flag = $flag; }}$o = new Flag();$p = new Flag();$q = $o;$r = new OtherFlag();/*Two instances of the same classo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : FALSEo1 !== o2 : TRUE */echo "Two instances of the same class\n";compareObjects($o, $p);/*Two references to the same instanceo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : TRUEo1 !== o2 : FALSE */echo "\nTwo references to the same instance\n";compareObjects($o, $q);/*Instances of two different classeso1 == o2 : FALSEo1 != o2 : TRUEo1 === o2 : FALSEo1 !== o2 : TRUE */echo "\nInstances of two different classes\n";compareObjects($o, $r);?>

 

对象串行化

  对象是一种在内存中存储的数据类型,它的寿命通常随着生成该对象的程序终止而终止。有时候可能需要将对象的状态保存下来,需要时再将对象恢复。对象通过写出描述自己状态的数值来记录自己,这个过程称对象的串行化(Serialization)。以下两种情况需要将对象串行化:1、对象需要在网络中传输时,将对象串行化成二进制串即可;2、对象需要持久保存时,将对象串行化后写入文件或数据库

serialize()

  serialize() -- 串行化,返回一个包含字节流的字符串

unserialize()

  unserialize() -- 反串行化,能够重新把字符串变回php原来的对象值

  串行化一个对象将会保存对象的所有属性变量和类名信息,但是不会保存对象的方法

one; } } // page1.php: include("classa.inc"); $a = new A; $s = serialize($a); // 把变量$s保存起来以便文件page2.php能够读到 file_put_contents('store', $s);// page2.php: include("classa.inc"); $s = file_get_contents('store'); $a = unserialize($s); // 现在可以使用对象$a里面的函数 show_one() $a->show_one();?>

 

json

json_encode

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

  json_encode()方法对变量进行 JSON 编码

1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);echo json_encode($arr);//{"a":1,"b":2,"c":3,"d":4,"e":5}?>

json_decode

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

  json_decode()方法对 JSON 格式的字符串进行解码,接受一个 JSON 编码的字符串并且把它转换为 PHP 变量,当assoc参数为 TRUE 时,将返回 array 而非 object

int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5)} */var_dump(json_decode($json));/*array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5)} */var_dump(json_decode($json, true));?>

转载地址:http://nftwl.baihongyu.com/

你可能感兴趣的文章
RDS PG如何安装DTS需要的增量迁移插件?
查看>>
阿里的Atlas组件化框架
查看>>
《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布...
查看>>
Forrester告诫CIO们:谨慎应用区块链网络
查看>>
使用Eclipse连接SAP云平台上的HANA数据库实例
查看>>
java.io.IOException: Connection reset by peer
查看>>
MySQL · myrocks · 事务锁分析
查看>>
Mysql中,int(10)和int(11)的区别
查看>>
观点对立,无关虚拟现实技术
查看>>
VC++动态链接库(DLL)编程深入浅出(四)(转)
查看>>
Cortex-M3启动深度解析
查看>>
PKI/CA 技术的介绍
查看>>
只知道人工智能远远不够 下一件大事将是边缘计算!
查看>>
ECS 还是轻量应用服务器,看完评测你就知道了?
查看>>
Android手势监听类GestureDetector的使用
查看>>
Hive语言手册-ORC
查看>>
提高网页效率的14条准则
查看>>
MYISAM表的.frm、MYI损坏,丢失的修复方法
查看>>
比较两个数大小
查看>>
SOA安全性解决方案
查看>>