Методи __clone
Методи __clone ба таври худкор ҳангоми истифода оператори clone фаро хонда мешавад.
Он имкон медиҳад, ки мантиқи нусхабардории фардии объект муайян карда шавад. Ба таври пешфарз PHP
нусхабардории рӯизаминаи ҳамаи хусусиятҳои объектро иҷро мекунад. Методи __clone судманд аст
вақте ки нусхабардории чуқур татбиқ кардан лозим аст ё рафтори клон кардани объектро тағйир додан лозим аст.
Синтаксис
public function __clone(): void
Мисол
Клон кардани асосии объектро татбиқ мекунем:
<?php
class User {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __clone() {
echo 'Объект клон карда шуд';
}
}
$user1 = new User('John');
$user2 = clone $user1;
?>
Натиҷаи иҷрои код:
'Объект клон карда шуд'
Мисол
Клон кардани чуқури объектро бо объектҳои ҷойгиршуда татбиқ мекунем:
<?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;
?>
Натиҷаи иҷрои код:
'New York'
Мисол
Шиносаи ягонаро ҳангоми клон кардан илова мекунем:
<?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('Laptop');
$product2 = clone $product1;
echo $product1->id . ' ' . $product2->id;
?>
Натиҷаи иҷрои код (мисол):
'5f1a2b3c 5f1a2b3d'
Ҳамчунин бубинед
-
методи
__construct,
ки созандаи объект мебошад