php對象和引用

來源:互聯網
上載者:User
在php5 的對象編程經常提到的一個關鍵點是“預設情況下對象是通過引用傳遞的”。但其實這不是完全正確的。下面通過一些例子來說明。

php的引用是別名,就是兩個不同的變數名字指向相同的內容。在php5,一個物件變數已經不再儲存整個對象的值。只是儲存一個標識符來訪問真正的對象內容。 當對象作為參數傳遞,作為結果返回,或者賦值給另外一個變數,另外一個變數跟原來的不是引用的關係,只是他們都儲存著同一個標識符的拷貝,這個標識符指向同一個對象的真正內容。

Example #1 引用和對象

<?php    class A {        public $foo = 1;    }    $a = new A;    $b = $a; // $a ,$b都是同一個標識符的拷貝    // ($a) = ($b) = <id>    $b->foo = 2;    echo $a->foo."\n";    $c = new A;    $d = &$c; // $c ,$d是引用    // ($c,$d) = <id>    $d->foo = 2;    echo $c->foo."\n";    $e = new A;    function foo($obj) {        // ($obj) = ($e) = <id>        $obj->foo = 2;    }    foo($e);    echo $e->foo."\n";?>

以上常式會輸出:

222
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.