Metode __clone
Die metode __clone word outomaties aangeroep wanneer die clone-operator gebruik word.
Dit laat jou toe om jou eie logika vir die kopiëring van die objek te definieer. Standaard voer PHP
'n vlak kopiëring van alle eienskappe van die objek uit. Die __clone-metode is nuttig
wanneer jy diep kopiëring wil implementeer of die gedrag tydens kloning wil verander.
Sintaksis
public function __clone(): void
Voorbeeld
Laat ons basiese kloning van 'n objek implementeer:
<?php
class User {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __clone() {
echo 'Objek is gekloneer';
}
}
$user1 = new User('John');
$user2 = clone $user1;
?>
Resultaat van die kode-uitvoering:
'Objek is gekloneer'
Voorbeeld
Laat ons diep kopiëring van 'n objek met geneste objekte implementeer:
<?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;
?>
Resultaat van die kode-uitvoering:
'New York'
Voorbeeld
Laat ons 'n unieke identifiseerder tydens kloning byvoeg:
<?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('Skootrekenaar');
$product2 = clone $product1;
echo $product1->id . ' ' . $product2->id;
?>
Resultaat van die kode-uitvoering (voorbeeld):
'5f1a2b3c 5f1a2b3d'
Sien ook
-
die metode
__construct,
wat die konstruktor van die objek is