347 of 410 menu

Η μέθοδος __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,
    που είναι ο κατασκευαστής του αντικειμένου
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη