主页 > 知识库 > PHP对象的浅复制与深复制的实例详解

PHP对象的浅复制与深复制的实例详解

热门标签:清远阳山400电话号码如何申请 百度地图标注饭店位置怎么 深圳400电话办理那家好 襄阳房产电销机器人招商 安徽移动外呼系统 施工地图标注怎么做 怎么在高德地图标注行走轨迹 个性化地图标注在线 百度地图标注名编辑

PHP对象的浅复制与深复制的实例详解

最近在看原型模式时注意到这个问题~~PHP中对象 '=' 与‘clone'的区别

实例代码:

//聚合类 
class ObjA { 
  public $num = 0; 
  public $objB;//包含的对象 
  function __construct() { 
    $this->objB = new ObjB(); 
  } 
  //只有实现了下面方法聚合类 才能实现深复制 
  /*function __clone() { 
    $this->objB = clone $this->objB; 
  }*/ 
} 
 
class ObjB { 
  public $num2 = 0; 
} 
 
//原型对象 
$objA = new ObjA(); 
 
//复制对象(‘='复制引用) 
$objA2 = $objA; 
$objA2->num = 2; 
//随着$objA2->num的变化 $objA->num也变化了 
print_r($objA->num.'br/>');//结果为2 
print_r($objA2->num.'br/>');//结果为2 
 
//复制对象(‘clone'关键字克隆) 
$objA3 = clone $objA; 
$objA3->num = 4; 
//随着$objA3->num的变化 $objA->num没有变化 
print_r($objA->num.'br/>');//结果为2 
print_r($objA3->num.'br/>');//结果为4 
//但是clone的对象(是聚合类)中包含其他对象时所包含的对象(objB)复制的是引用 
$objA3->objB->num2 = 7; 
print_r($objA3->objB->num2.'br/>');//结果是7 
print_r($objA->objB->num2.'br/>');//结果是7/pre> 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:
  • php面向对象全攻略 (三)特殊的引用“$this”的使用
  • PHP对象递归引用造成内存泄漏分析
  • PHP对象相互引用的内存溢出实例分析
  • php中引用&的用法分析【变量引用,函数引用,对象引用】
  • php5对象复制、clone、浅复制与深复制实例详解
  • PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
  • PHP 5.0对象模型深度探索之对象复制
  • php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
  • php实现对象克隆的方法
  • PHP对象克隆clone用法示例
  • PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
  • php中对象引用和复制实例分析

标签:临夏 黑河 中卫 阜阳 南昌 钦州 驻马店 延边

巨人网络通讯声明:本文标题《PHP对象的浅复制与深复制的实例详解》,本文关键词  PHP,对象,的,浅,复制,与,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《PHP对象的浅复制与深复制的实例详解》相关的同类信息!
  • 本页收集关于PHP对象的浅复制与深复制的实例详解的相关信息资讯供网民参考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推荐文章