PHP 物件導向 (四)類物件賦值為引用傳遞

一句話兒發表於2020-01-18
  • 值傳遞

    變數的複製,變數指向不同地址,一個變數的更改 不會 影響另一個變數

  • 引用傳遞

    指向同一個地址,一個變數的更改 會 影響另一變數

  • 物件賦值, 為引用傳遞

<?php
namespace Article {
    class Comment1
    {
        public $title;
        public $content;
        public function __construct($title, $content)
        {
            $this->title = $title;
            $this->content = $content;
        }

        public function getTitle($title)
        {
            $title = 123;
            return $title;
        }

        public function getTitleBy(&$title)
        {
            $title = 456;
            return $title;
        }
    }
    $obj = new Comment1('title', 'content');

    $obj->getTitle($obj->title); //值傳遞,不會影響$obj物件的$title屬性

    echo $obj->title;echo "<br/>";

    echo "<pre>";var_dump($obj);echo "</pre>";echo "<br/>";

    $obj->getTitleBy($obj->title);//引用傳遞,會影響$obj物件的$title屬性

    echo $obj->title;echo "<br/>";

    echo "<pre>";var_dump($obj);echo "</pre>";echo "<br/>";

    $obj2 = $obj;  //物件賦值,預設為引用傳遞,變數$obj2的修改 會 影響另一個變數$obj

    $obj2->title = 'obj2 改變 title';

    echo "<pre>";var_dump($obj);echo "</pre>";echo "<br/>";
}

複製程式碼,即可執行。 謝謝你的瀏覽,如有錯誤,歡迎指正哈!!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫的不好,就當是整理下思緒吧。

相關文章