347 of 410 menu

A __clone metódus

A __clone metódus automatikusan meghívódik a clone operátor használatakor. Lehetővé teszi saját másolási logika meghatározását az objektum számára. Alapértelmezetten a PHP az objektum összes tulajdonságának sekély másolatát készíti. A __clone metódus hasznos, amikor mély másolatot kell készíteni, vagy meg kell változtatni a klónozás viselkedését.

Szintaxis

public function __clone(): void

Példa

Alapvető objektum klónozás implementálása:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'Objektum klónozva'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

A kód végrehajtásának eredménye:

'Objektum klónozva'

Példa

Mély másolat implementálása beágyazott objektumokkal rendelkező objektum esetén:

<?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; ?>

A kód végrehajtásának eredménye:

'New York'

Példa

Egyedi azonosító hozzáadása klónozáskor:

<?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; ?>

A kód végrehajtásának eredménye (példa):

'5f1a2b3c 5f1a2b3d'

Lásd még

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás