Home | 高级前端进阶之路

                                          Home | 高级前端进阶之路

                                            Home | 高级前端进阶之路logo1

                                             在现代互联网技术迅猛发展的背景下,前端开发已经从基础的页面构建演变为复杂的工程化开发领域。高级前端开发者不仅需要掌握 HTML、CSS 和 JavaScript 的基础知识,还需深入了解多种编程语言、框架、工具链以及跨领域技术的整合应用,如 Java、PHP 和 C++ 等。高级前端开发的核心是提升工程能力,优化用户体验,并构建高性能的可扩展应用。

                                          高级前端进阶之路

                                          • Home | 高级前端进阶之路
                                          • Home | 高级前端进阶之路
                                          • Home | 高级前端进阶之路

                                          关注我 么么哒

                                          高级前端进阶之路 > 新闻中心 >

                                          图文解析PHP对象的赋值操作是“传值”还是“传址”

                                          文章来源:靖柔 时间:2025-01-24


                                          尔们晓得,变量默许老是传值赋值。也便是道,当将1个表白式的值付与1个变量时,全部本初表白式的值被赋值到方针变量。那表示着,当1个变量的值付与别的1个变量时,转变个中1个变量的值,将没有会浸染到别的1个变量。


                                          举个复杂例子:


                                          <?php 
                                          $a = 'hello world';
                                          $b = $a;
                                          $a = 'bey world';
                                          
                                          var_dump($a);
                                          var_dump($b);
                                          ?>


                                          此时的$b = $a,正在内乱存中的存贮年夜致是如许子的:

                                          001.png


                                          然则当1个对于象被真例化后,对于象的传送并不是传值,而是传送该对于象的天址。也便是道,没有会复造全部对于象,由于如许干既耗时又耗内乱存。

                                          一样举个复杂例子:


                                          <?php
                                          class Person
                                          {
                                              public $name;
                                              public $age;
                                          }
                                          
                                          $a = new Person();
                                          $b = $a;
                                          $c = &$a;
                                          $a->name = 'gavin';
                                          $a = null;
                                          
                                          var_dump($b);
                                          var_dump($a);
                                          var_dump($c);


                                          施行了局:


                                          object(Person)#1 (2) { ["name"]=> string(5) "gavin" ["age"]=> NULL } 
                                          NULL 
                                          NULL


                                          下面例子中变量的操纵进程年夜致以下:


                                          $b = $a;
                                          $c =& $a;


                                          当把1个对于象真例赋给1个新变量时,新变量会拜候统一个真例。

                                          援用赋值(&)表示着新的变量援用了本初变量,换行之,成为其"一名" 大概 "指背"。窜改新的变量将浸染到本初变量,反之亦然。


                                          002.png


                                          $a = null;


                                          003.png


                                          大概您会问,既然曲交赋值没有是复造对于象,那怎样才干复造对于象呢?PHP里克隆复造对于象应用clone操纵符:


                                          $f = new Person();
                                          $b = clone $f; //创设1个对于象正本


                                          小结

                                          经由过程原文,尔们一同瓜分了正在PHP中对于象的赋值掌握,传送的是对于象天址,而没有是复造对于象。PHP中能够应用clone掌握符去复造对于象。本领无限,倘使年夜家出现原文有"bug",接待没有吝见教,共时倘若年夜家有其余疑义或者看法,接待一同瓜分交换。尔们协同进修,共通交换,协同前进。