首頁  >  文章  >  後端開發  >  PHP 物件克隆 clone 關鍵字與 __clone() 方法

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

巴扎黑
巴扎黑原創
2016-11-11 17:56:271131瀏覽


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🎜🎜我的名字是:我是假的張三
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn