> 對象傳值本質(zhì)上是引用傳值,將一個(gè)對象變量($a)賦值給另個(gè)變量($b),實(shí)際上是將$a存儲(chǔ)的對象內(nèi)存引用地址賦值$b,此時(shí)兩個(gè)變量指向的就是一個(gè)對象。其中一個(gè)變量發(fā)送改變,另一個(gè)也會(huì)跟著改變。和引用變量一個(gè)道理。 #### 1. 對象傳值示例 --- **對象傳值本質(zhì)上就是引用傳值** ```php $a = new User; $b = $a;//對象傳值 var_dump($a, $b); $b->name = '張三'; var_dump($a, $b); class User { } ``` **運(yùn)行結(jié)果,其實(shí)第一次打印就可以看出來`$a` 和 `$b` 是一個(gè)對象,因?yàn)閷ο髽?biāo)識(shí)符一樣(都是 1)** ![](https://img.itqaq.com/art/content/0a954dd050af4b5bc7b51dfadeac7ffd.png) #### 2. 解釋說明 --- 如果將一個(gè)對象賦值給變量($a),`$a` 實(shí)際上存的是`對象的內(nèi)存引用地址`,而不是對象 **對象存在堆內(nèi)存中,內(nèi)存引用地址存在棧內(nèi)存中**,所以將 `$a` 賦值給另一個(gè)變量 `$b`, 實(shí)際上是將 $a 存的`對象的內(nèi)存引用地址`賦值給了 $b,也就是 $a 和 $b 存的是同一個(gè)引用地址, 所以兩個(gè)變量實(shí)際上是一個(gè)對象,因此 $b 發(fā)生改變, $a 也跟著改變