php 對象用&傳遞參數 與 對象用作普通參數的區別


對象用&傳遞參數和對象用作普通參數傳遞的區別

對象傳值方式中叫:引用傳值,地址傳值

與用&符號傳遞:也叫引用傳遞

由於這兩個也叫引用,而且作用看似很相似,所以很容易混淆。

傳值方式中的引用傳值:就是變量傳遞的內容是地址。

用&符號傳遞的引用傳遞:用了&就是變量的別名。比如一個人有一個名字,有的人也有一個小名,小名就是這里別名,都是同一人。

      別名從本人的理解 同一個內存它有兩個名字 ,但不是地址傳值。

 

用文字比較難說明

代碼案例理解

 

[php]  view plain  copy
 
  1. <?php  
  2.   
  3.     class A3 {  
  4.         public $foo = 'empty';  
  5.     }  
  6.       
  7.     class B3 {  
  8.         public $foo = 'empty';  
  9.         public $bar = 'hello';  
  10.     }  
  11.       
  12.     function normalAssignment($obj) { //對象用作普通參數  
  13.         $obj->foo = 'changed';  
  14.         $obj = new B3; //這里說明對象是普通的地址傳值  
  15.     }  
  16.       
  17.     function referenceAssignment(&$obj) {//對象用&傳值  
  18.         $obj->foo = 'changed';  
  19.         $obj = new B3; //這里體現了區別 &引用的別名  
  20.     }  
  21.       
  22.       
  23.     $a = new A3;  
  24.     normalAssignment($a);  
  25.     echo get_class($a), "\n";//輸出A3  
  26.     echo "foo = {$a->foo}\n";//輸出foo = changed   
  27.       
  28.     referenceAssignment($a);  
  29.     echo get_class($a), "\n";//輸出B3  關鍵理解這里為什么  
  30.     echo "foo = {$a->foo}\n";//foo = empty   
  31.     echo "bar = {$a->bar}\n";//bar = hello   
  32.   
  33. ?>  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM