站長資訊網
        最全最豐富的資訊網站

        php clone關鍵字怎么用

        在php中,clone關鍵字可以用于克隆對象,語法格式“克隆對象名稱 = clone 原對象名稱;”;對象克隆成功后,它們中的成員方法、屬性以及值是完全相同的。如果要對克隆后副本的成員屬性重新賦值,可以使用“__clone()”方法。

        php clone關鍵字怎么用

        本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦

        PHP clone關鍵字(克隆對象)

        PHP 中的對象模型是通過引用來調用對象的,但有時需要建立一個對象的副本,在改變原有對象時不希望影響到對象副本。如果使用new關鍵字重新創建對象,再為屬性賦上相同的值,這樣做會比較煩瑣而且也容易出錯。在 PHP 中可以根據現有的對象克隆出一個完全一樣的對象,克隆以后,原本對象和副本對象是完全獨立互不干擾的。

        在 PHP 中可以使用 clone 關鍵字克隆對象,語法格式如下:

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

        因為 clone 的方式實際上是對整個對象的內存區域進行了一次復制并用新的對象變量指向新的內存,因此賦值后的對象和原對象之間是相互獨立的。

        對象克隆成功后,它們中的成員方法、屬性以及值是完全相同的。如果要對克隆后副本的成員屬性重新賦值,可以使用 __clone() 方法。

        【示例】下面通過一個簡單的示例來演示一下 clone 關鍵字的使用。

        <?php     class Website{         public $name, $url;         public function __construct($name, $url){             $this -> name = $name;             $this -> url  = $url;         }         public function output(){             echo $this -> name.','.$this -> url.'<br>';         }     }     $obj  = new Website('PHP中文網', 'https://www.php.cn/');     $obj2 = clone $obj;     $obj  -> output();     $obj2 -> output();     echo '<pre>';     var_dump($obj);     var_dump($obj2); ?>

        運行結果如下:

        PHP中文網,https://www.php.cn/ PHP中文網,https://www.php.cn/ object(Website)#1 (2) {   ["name"]=>   string(16) "PHP中文網"   ["url"]=>   string(27) "https://www.php.cn/" } object(Website)#2 (2) {   ["name"]=>   string(16) "PHP中文網"   ["url"]=>   string(27) "https://www.php.cn/" }

        注意:如果使用=將一個對象賦值給一個變量,那么這時得到的將是一個對象的引用,通過這個變量更改屬性的值將會影響原來的對象。

        __clone() 魔術方法

        __clone() 方法不能夠直接被調用,只有當通過 clone 關鍵字克隆一個對象時才可以使用該對象調用 __clone() 方法。當創建對象的副本時,PHP 會檢查 __clone() 方法是否存在。如果不存在,那么它就會調用默認的 __clone() 方法,復制對象的所有屬性。如果 __clone() 方法已經定義過,那么 __clone() 方法就會負責設置新對象的屬性。所以在 __clone() 方法中,只需要覆蓋那些需要更改的屬性就可以了。

        __clone() 方法不需要任何參數,下面通過一個示例來演示一下:

        <?php     class Website{         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(){             $this -> name = 'PHP教程';             $this -> url  = 'https://www.php.cn/';         }     }     $obj  = new Website('PHP中文網', 'https://www.php.cn/');     $obj2 = clone $obj;     $obj  -> output();     $obj2 -> output(); ?>

        運行結果如下:

        PHP中文網,https://www.php.cn/ PHP教程,https://www.php.cn/

        提示:如果在類中設置一個空的,訪問權限為 private(私有的)的 __clone() 方法的話,可以起到禁止克隆的作用。

        推薦學習:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 成人国产精品一区二区视频| 四虎国产精品永久地址入口| 欧美激情精品久久久久久久九九九 | 久久99国产综合精品| 国产精品白丝jkav网站| 国产69精品久久久久777| 亚洲国产精品久久电影欧美| 精品一区二区三区免费观看| 国产国产成人精品久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产亚洲Aⅴ香蕉| 欧美日韩精品乱国产538| 国产精品1区2区| 国精品午夜福利视频不卡麻豆| 亚洲永久精品ww47| 亚洲av无码成人精品国产| 精品伦精品一区二区三区视频 | 夜夜高潮夜夜爽国产伦精品| 国内精品久久久久久久涩爱| 91精品观看91久久久久久| 国产精品亚洲精品| 潮喷大喷水系列无码久久精品| 日韩精品区一区二区三VR| 亚洲精品视频免费观看| 久久久91人妻无码精品蜜桃HD | 国产福利电影一区二区三区,亚洲国模精品一区 | 精品久久久久久亚洲精品| 日韩精品一区二区三区色欲AV| 亚洲精品线路一在线观看| 天天爽夜夜爽8888视频精品| 久久久久久亚洲精品不卡| 久久国产精品免费一区| 国产精品视频免费一区二区| 99热这里只有精品6国产免费| 日本精品久久久中文字幕| 精品综合久久久久久97超人| 华人亚洲欧美精品国产| 老司机国内精品久久久久| 九九热精品在线| 国产福利电影一区二区三区,欧美国产成人精品一| 久久精品视频免费|