PHP 中的 clone 關鍵字可以讓我們復制一個對象,從而得到一個新的對象。在實際使用中,clone 可以用于原型模式、克隆模式等場景。下面通過舉例來詳細說明 clone 的用法。
假設有一個 Student 類,其中有 $name 和 $age 兩個屬性,如下所示:
<?php
class Student {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function sayHello() {
echo 'Hello, my name is ' . $this->name . ', and I am ' . $this->age . ' years old.';
}
}
$mary = new Student('Mary', 18);
$bob = clone $mary;
上面的代碼中,我們定義了一個 Student 類,并創建了一個 $mary 對象。接著使用 clone 關鍵字創建一個 $bob 對象,$bob 對象和 $mary 對象具有相同的屬性和方法。
我們可以打印出 $mary 和 $bob 的屬性,看看它們是否相同:
<?php
echo 'Mary: ' . $mary->name . ' ' . $mary->age . '<br>';
echo 'Bob: ' . $bob->name . ' ' . $bob->age . '<br>';
輸出結果如下:
Mary: Mary 18
Bob: Mary 18
可以看到,$bob 對象和 $mary 對象的屬性相同。接下來,我們可以改變 $bob 對象的屬性,看看 $mary 對象是否也會受影響:
<?php
$bob->name = 'Bob';
$bob->age = 20;
echo 'Mary: ' . $mary->name . ' ' . $mary->age . '<br>';
echo 'Bob: ' . $bob->name . ' ' . $bob->age . '<br>';
輸出結果如下:
Mary: Mary 18
Bob: Bob 20
可以看到,在改變 $bob 對象的屬性之后,$mary 對象的屬性沒有受到影響,$mary 對象和 $bob 對象是完全獨立的。
總結來說,clone 關鍵字可以讓我們復制一個對象,并創建一個新的對象。新的對象和原對象具有相同的屬性和方法,但是它們是獨立的,互不影響。在實際開發中,clone 關鍵字可以幫助我們實現一些很有用的功能。
上一篇php clone原理
下一篇php close ()