zoukankan      html  css  js  c++  java
  • php中对象是引用类型吗?

    这貌似是一个极其简单的问题,还用得着专门写一篇博文?各位看官,最初我也这么认为,但这的确蒙蔽了你那水灵灵的小眼睛,不妨看看什么是引用?

    $a = 10;
    $b = &$a;
    $b = 20;
    var_dump($a,$b);
    在这段极其简单的代码中,$b是$a的引用,也即是别名,修改$b,$a会变,反之亦然。这就是所谓的引用,那对象是不是也是这样的呢?
    class A
    {
    public $num = 10;
    }
    $a = new A();
    $a->num = 20;
    function demo($b)
    {
    $b[0] = 5;
    var_dump($b);
    }
    demo($a)
    var_dump($a);
    你会发现两次输出一样,那这是不是说明对象做函数参数时是引用传参呢?在这一点上不得不说千锋的学生的确是勤学好问,我刚开始以为是引用传参,但同学提出如果你把demo里修改为:
    function demo($b)
    {
    $b = new A();
    var_dump($b);
    }
    两次输出并不一样!这是为什么呢?如果从c语言角度讲,php里的任何变量,包括对象都是指针,对象做参数相当于二重指针,所以当$b指向一个全新的对象后,并不影响$obj,所以对象做函数参数并不是引用传参!又这么一帮勤学好问的学生,整个水准都不一样了。

  • 相关阅读:
    下雪诗
    华视身份证阅读器100UC HTTP模式二次开发
    C# Action 和 Func 区别
    网站部署——文件系统
    前端-JavaScript DOM和BOM
    IO多路复用
    python-协程
    python-线程
    python-进程
    计算机与操作系统简介
  • 原文地址:https://www.cnblogs.com/landmark/p/6891777.html
Copyright © 2011-2022 走看看