码迷,mamicode.com
首页 > Web开发 > 详细

简单理解php深复制浅复制问题

时间:2017-04-10 10:46:47      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:对象   new   使用   注入   blog   logs   官方   str   空间   

其实接触深复制浅复制是通过学习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深复制浅复制问题

标签:对象   new   使用   注入   blog   logs   官方   str   空间   

原文地址:http://www.cnblogs.com/zx-admin/p/6687753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!