91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用PHP中clone關鍵字和__clone()方法

發布時間:2021-10-25 17:04:29 來源:億速云 閱讀:119 作者:iii 欄目:編程語言

本篇內容介紹了“如何使用PHP中clone關鍵字和__clone()方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

如何使用PHP中clone關鍵字和__clone()方法

在我們之前的學習中,有很多的關鍵字,比如$this$new之類的,今天我們繼續來看一下在PHP中也算比較常用到的關鍵字clone克隆關鍵字。在學習克隆關鍵字之前,我們需要知道PHP中的對象模型是通過引用來調用對象的,但是又是偶需要建議一個對象的副本,目的就是想再原有對象改變的時候能夠不影響到對象副本。

這時候如果使用new關鍵字是可以重新創建對象,然后再給屬性賦上相同的值,也是可以起到新建副本的作用,但是這種方法不僅麻煩而且容易出錯,這時候就希望PHP能有一個完全一樣的對象,而且這兩個還不是互相干擾的,也就是我們想的克隆。那應該怎樣去實現呢?不慌,接著看。

clone關鍵字

我們希望有一個能夠和原本對象互不干擾的副本,在PHP中通過clone關鍵字就可以實現克隆對象了。

clone關鍵字的語法格式如下:

克隆對象名稱 = clone 原對象名稱;

你可以把克隆這個動作理解為,把對象的內存區域進行復制,賦值后的對象與原對象之間是相互獨立的。并且他們之間的成員方法、屬性和值都是完全相同的。

接下來我們通過一個簡單的實例來看一下clone的能力吧,示例如下:

<?php
    class father{
        public $study1, $study2;
        public function __construct($study1, $study2){
            $this -> study1 = $study1;
            $this -> study2 = $study2;
        }
        public function output(){
            echo $this -> study1.','. $this -> study2.'<br>';
        }
    }
    $obj  = new father('好好學習', '天天向上');
    $obj2 = clone $obj;//克隆$obj
    $obj  -> output();
    $obj2 -> output();
    echo '<pre>';
    var_dump($obj);
    var_dump($obj2);
?>

輸出結果:

如何使用PHP中clone關鍵字和__clone()方法

其中我們需要注意的是,如果使用=將一個對象賦值給一個變量,那么這時得到的將是一個對象的引用,通過這個變量更改屬性的值將會影響原來的對象。所以還是得用clone,更改屬性值不會影響到原來的對象。

通過上述實例,我們已經知道應該如何去克隆一個對象來為我們所用了,但是對象克隆成功后,他的屬性、成員方法以及值都是和原對象一模一樣完全相同的,那這時候我們光說更改屬性不會影響到原來的對象,但是應該怎樣去給克隆后的副本成員屬性重新賦值呢?這時候我們就要用到PHP魔術方法中的__clone()方法。

__clone()方法

PHP中__clone()方法是不能夠直接調用的,有clone才有__clone(),只有通過clone關鍵字克隆了一個對象的時候,才能夠通過這個克隆出來的對象來調用__clone()方法。

這時候再用到clone創建副本的時候,就需要注意了,PHP會檢查__clone()是否存在。

要是不存在的話,PHP會默認賦值對象的全部屬性;如果__clone()存在,也就是定義過了,那么也就會負責了新對象的屬性。

加下來我們通過一個實例來看一下,實例如下:

<?php
    class father{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.','.$this -> url.'<br>';
        }
        public function __clone(){//通過__clone()來更改新對象的屬性
            $this -> name = '福如東海';
            $this -> url  = '壽比南山';
        }
    }
    $obj  = new father('好好學習', '天天向上');
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
?>

輸出結果:

如何使用PHP中clone關鍵字和__clone()方法

由上述實例,可以看出__clone() 方法不需要任何參數。其中我們還有一點可以知道的就是,想要禁止克隆的話,只需要在類中設置一個空的,訪問權限為 private(私有的)的 __clone() 方法的話,就可以起到禁止克隆的目的了。

“如何使用PHP中clone關鍵字和__clone()方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

聂荣县| 怀安县| 肇州县| 稷山县| 丰县| 文安县| 乌拉特前旗| 资源县| 河南省| 航空| 防城港市| 芜湖县| 洛浦县| 宝丰县| 乐东| 沂源县| 武定县| 河西区| 乌拉特后旗| 宝兴县| 山西省| 太仆寺旗| 临颍县| 大足县| 越西县| 武功县| 兴海县| 武威市| 亚东县| 临桂县| 胶州市| 塔河县| 古交市| 玉溪市| 昂仁县| 普兰店市| 杭锦后旗| 华亭县| 沛县| 呼和浩特市| 象州县|