php中的对象传值方式

Author Avatar
yyq 2020-09-06 09:48:39
  • 二维码

php中的对象传值方式

        NO1:php中变量赋值与对象赋值对比:

            <?php

                $a = 1;  //声明一个变量并赋值

                $b = $a;  //将数据类型的值赋给另一个变量

                $a = 2;  //修改$a的值

                echo $b;  //1  $a与$b是两个独立的内存空间,修改其中一个另一个不受影响


                //定义一个类

                class Person{

                    public $name;

                    public $age;

                }


                $p = new Person;  //new一个Person对象

                $p->name = 'yyq';  //通过对象给成员name赋值

                $m = $p;  //将对象赋值给另一个变量

                $m->name = 'change-yyq';  //修改$m的name值

                echo $p->name;  //change-yyq  通过引用传值方式成功赋值

                echo $m->name;  //change-yyq


        NO2:解析如下

            a:以上分别进行了变量赋值与对象赋值的操作方式,变量赋值方式可看作为‘拷贝赋值’,故在修改$a的情况下,$b值不受影响

            b:而将数据类型赋值给对象$p,通过$p修改对象内部的值成功,这种方式是引用传值。而将$p赋值给$m是将对象拷贝一份,还是按引用传值呢?可以看到当修改了$m的name值后$p的name值也被修改,所以并没有拷贝一份数据,也不是引用传值,它只是拷贝了一份对象标识符,依旧共用一份数据

            c:那对象按照引用传值的话是怎样的操作呢,代码如下:

                $m = &$p;  //引用传值,也不是直接拷贝一份数据,而是直接将$m指向对象标识符,修改其中一个值,所有值均被修改

        

            

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语