简单理解php深复制浅复制问题
Posted Z.X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单理解php深复制浅复制问题相关的知识,希望对你有一定的参考价值。
其实接触深复制浅复制是通过学习c++了解到的,比如c++很好用的模板,php是不允许方法模板和类模板
一个简单的例子,如果不是很了解php 的取地址符&,可以去看下官方文档,php的&就是别名
class zx{ public $r =‘44444444<br>‘; public function __construct() { } public function ccccc() { echo $this->r; } } $rr = new zx(); //$ee = $rr; 1 //$ee =&$rr; 2 $ee = clone $rr; 3 $ee->r =‘33333<br>‘; $ee->ccccc(); $rr->ccccc();
1和2的运行结果是 33333<br>33333<br>
3的结果是33333<br>44444444<br>
只有在使用clone的时候才是真的裂变2个内存空间,不然都是使用的同一段内存
比如还有一些复杂情况,依赖注入的时候或者在使用类对象变量注入类方法的时候,一些特殊状况等
一个小例子,抽象方法的也不一定非需要继承才能使用比如,某个抽象方法里面有个static 静态方法也是可以直接使用到的
注意:静态方法不能使用$this操作变量和方法,不然会报错
abstract class vv{ static $tt =‘1111‘; public static function dddd() { echo self::$tt; } } vv::dddd();
以上是关于简单理解php深复制浅复制问题的主要内容,如果未能解决你的问题,请参考以下文章