Phương thức __clone
Phương thức __clone được gọi tự động khi sử dụng toán tử clone.
Nó cho phép xác định logic sao chép đối tượng riêng. Theo mặc định, PHP
thực hiện sao chép nông tất cả các thuộc tính của đối tượng. Phương thức __clone hữu ích
khi cần triển khai sao chép sâu hoặc thay đổi hành vi khi nhân bản.
Cú pháp
public function __clone(): void
Ví dụ
Triển khai nhân bản đối tượng cơ bản:
<?php
class User {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __clone() {
echo 'Đối tượng đã được nhân bản';
}
}
$user1 = new User('John');
$user2 = clone $user1;
?>
Kết quả thực thi mã:
'Đối tượng đã được nhân bản'
Ví dụ
Triển khai sao chép sâu đối tượng với các đối tượng lồng nhau:
<?php
class Address {
public $city;
public function __construct($city) {
$this->city = $city;
}
}
class User {
public $name;
public $address;
public function __construct($name, $city) {
$this->name = $name;
$this->address = new Address($city);
}
public function __clone() {
$this->address = clone $this->address;
}
}
$user1 = new User('John', 'New York');
$user2 = clone $user1;
$user2->address->city = 'Boston';
echo $user1->address->city;
?>
Kết quả thực thi mã:
'New York'
Ví dụ
Thêm định danh duy nhất khi nhân bản:
<?php
class Product {
public $id;
public $name;
public function __construct($name) {
$this->id = uniqid();
$this->name = $name;
}
public function __clone() {
$this->id = uniqid();
}
}
$product1 = new Product('Máy tính xách tay');
$product2 = clone $product1;
echo $product1->id . ' ' . $product2->id;
?>
Kết quả thực thi mã (ví dụ):
'5f1a2b3c 5f1a2b3d'
Xem thêm
-
phương thức
__construct,
mà là hàm tạo đối tượng