PHP 物件克隆 clone 關鍵字與 __clone() 方法

巴扎黑
發布: 2016-11-12 09:18:24
原創
1323 人瀏覽過


PHP 物件複製 clone 關鍵字與 __clone() 方法

clone 關鍵字用來複製一個完全一樣的對象,__clone() 方法來重寫原本的屬性和方法。

物件克隆

有的時候我們需要在一個專案裡面使用兩個或多個一樣的對象,如果使用 new 關鍵字重新建立對象,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯。 PHP 提供了物件克隆功能,可以根據一個物件完全克隆出一個一模一樣的對象,而且複製以後,兩個物件互不干擾。

使用關鍵字 clone 來複製物件。語法:

$object2 = clone $object;

例子:

<?php
class Person {
    private $name;
    private $age;
    function __construct($name, $age) {
        $this->name=$name;
        $this->age=$age;
    }
    function say() {
        echo "我的名字叫:".$this->name."<br />";
echo "我的年龄是:".$this->age;
    }
}
$p1 = new Person("张三", 20);
$p2 = clone $p1;
$p2->say();
?>
登入後複製

運行例子,輸出:

我的名字叫:張三

我的年齡是:20

我的名字叫:張三

我的年齡是:20

我的名字叫:張三

我的年齡是:20

我的名字叫:張三

我的年齡是:20

我的名字是

複製後改變原物件的內容,需要在類別中加入一個特殊的__clone() 方法來重寫原本的屬性和方法。 __clone() 方法只會在物件被複製的時候自動呼叫。

例子:

<?php
class Person {
    private $name;
    private $age;
    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    function say() {
        echo "我的名字叫:".$this->name;
echo " 我的年龄是:".$this->age."<br />";
    }
    function __clone() {
        $this->name = "我是假的".$this->name;
        $this->age = 30;
    }
}
$p1 = new Person("张三", 20);
$p1->say();
$p2 = clone $p1;
$p2->say();
?>
登入後複製

運行例子,輸出:🎜我的名字叫:張三 我的年齡是:20🎜🎜我的名字叫:我是假的張三 我的年齡是:30🎜🎜我的名字叫:我是假的張三 我的年齡是:30🎜🎜我的名字是:我是假的張三
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!