站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        php clone關(guān)鍵字怎么用

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

        php clone關(guān)鍵字怎么用

        本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

        PHP clone關(guān)鍵字(克隆對(duì)象)

        PHP 中的對(duì)象模型是通過(guò)引用來(lái)調(diào)用對(duì)象的,但有時(shí)需要建立一個(gè)對(duì)象的副本,在改變?cè)袑?duì)象時(shí)不希望影響到對(duì)象副本。如果使用new關(guān)鍵字重新創(chuàng)建對(duì)象,再為屬性賦上相同的值,這樣做會(huì)比較煩瑣而且也容易出錯(cuò)。在 PHP 中可以根據(jù)現(xiàn)有的對(duì)象克隆出一個(gè)完全一樣的對(duì)象,克隆以后,原本對(duì)象和副本對(duì)象是完全獨(dú)立互不干擾的。

        在 PHP 中可以使用 clone 關(guān)鍵字克隆對(duì)象,語(yǔ)法格式如下:

        克隆對(duì)象名稱 = clone 原對(duì)象名稱;

        因?yàn)?clone 的方式實(shí)際上是對(duì)整個(gè)對(duì)象的內(nèi)存區(qū)域進(jìn)行了一次復(fù)制并用新的對(duì)象變量指向新的內(nèi)存,因此賦值后的對(duì)象和原對(duì)象之間是相互獨(dú)立的。

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

        【示例】下面通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)演示一下 clone 關(guān)鍵字的使用。

        <?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中文網(wǎng)', 'https://www.php.cn/');     $obj2 = clone $obj;     $obj  -> output();     $obj2 -> output();     echo '<pre>';     var_dump($obj);     var_dump($obj2); ?>

        運(yùn)行結(jié)果如下:

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

        注意:如果使用=將一個(gè)對(duì)象賦值給一個(gè)變量,那么這時(shí)得到的將是一個(gè)對(duì)象的引用,通過(guò)這個(gè)變量更改屬性的值將會(huì)影響原來(lái)的對(duì)象。

        __clone() 魔術(shù)方法

        __clone() 方法不能夠直接被調(diào)用,只有當(dāng)通過(guò) clone 關(guān)鍵字克隆一個(gè)對(duì)象時(shí)才可以使用該對(duì)象調(diào)用 __clone() 方法。當(dāng)創(chuàng)建對(duì)象的副本時(shí),PHP 會(huì)檢查 __clone() 方法是否存在。如果不存在,那么它就會(huì)調(diào)用默認(rèn)的 __clone() 方法,復(fù)制對(duì)象的所有屬性。如果 __clone() 方法已經(jīng)定義過(guò),那么 __clone() 方法就會(huì)負(fù)責(zé)設(shè)置新對(duì)象的屬性。所以在 __clone() 方法中,只需要覆蓋那些需要更改的屬性就可以了。

        __clone() 方法不需要任何參數(shù),下面通過(guò)一個(gè)示例來(lái)演示一下:

        <?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中文網(wǎng)', 'https://www.php.cn/');     $obj2 = clone $obj;     $obj  -> output();     $obj2 -> output(); ?>

        運(yùn)行結(jié)果如下:

        PHP中文網(wǎng),https://www.php.cn/ PHP教程,https://www.php.cn/

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

        推薦學(xué)習(xí):《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 少妇伦子伦精品无码STYLES | 亚洲国产精品综合久久网络| 精品人妻无码一区二区色欲产成人| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产高清在线精品一区二区 | 久久91精品国产91久久户| 亚洲国产精品无码专区| 久热这里只有精品99国产6| 国产91精品黄网在线观看| 国产精品视频一区二区三区四| 在线精品视频一区二区| 久草欧美精品在线观看| 国产精品无码素人福利不卡| 91精品国产高清久久久久久国产嫩草 | 91精品在线看| 亚洲AV乱码久久精品蜜桃| 亚欧乱色国产精品免费视频| 狠狠精品久久久无码中文字幕 | 国产精品久久影院| 8AV国产精品爽爽ⅴa在线观看| 人妻精品久久无码区| 亚洲精品你懂的在线观看 | 国产a精品视频| 99精品无人区乱码在线观看| 国产成人亚洲精品青草天美| 国产精品扒开腿做爽爽爽视频| 精品福利视频一区二区三区| 精品人伦一区二区三区潘金莲| 精品熟女少妇a∨免费久久| 久久免费的精品国产V∧| 久久精品99久久香蕉国产色戒| 久久精品人人槡人妻人人玩AV | 精品97国产免费人成视频| 国产精品麻豆欧美日韩ww| 国产精品gz久久久| 国产精品永久久久久久久久久| 国产精品你懂的在线播放| 黑人无码精品又粗又大又长| 久久久久亚洲精品中文字幕| 亚洲日韩精品无码专区网站| 无码国内精品人妻少妇|