347 of 410 menu

Método __clone

O método __clone é chamado automaticamente quando o operador clone é usado. Ele permite definir a lógica personalizada para copiar o objeto. Por padrão, o PHP executa uma cópia superficial de todas as propriedades do objeto. O método __clone é útil quando é necessário implementar uma cópia profunda ou alterar o comportamento durante a clonagem.

Sintaxe

public function __clone(): void

Exemplo

Vamos implementar uma clonagem básica de objeto:

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

Resultado da execução do código:

'Objeto clonado'

Exemplo

Vamos implementar uma cópia profunda de um objeto com objetos aninhados:

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

Resultado da execução do código:

'New York'

Exemplo

Vamos adicionar um identificador único durante a clonagem:

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

Resultado da execução do código (exemplo):

'5f1a2b3c 5f1a2b3d'

Veja também

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar