Nenhum produto encontrado nessa seleção.
Criar clones de objetos em PHP é extremamente simples, você pode utilizar a palavra {php}clone{/php} para criar um objeto exatamente idêntico ao objeto clonado.
Veja um exemplo:
<?php class Pessoa { // Propriedades da classe public $nome; public $sobrenome; public $idade; // Construtor - Define os valores das propriedades public function __construct ( $nome = null, $sobrenome = null, $idade = 0 ) { $this->nome = $nome; $this->sobrenome = $sobrenome; $this->idade = (int) $idade; } // Método para exibir public function exibir () { echo 'Nome: '; echo $this->nome . '<br>'; echo 'Sobrenome: '; echo $this->sobrenome . '<br>'; echo 'Idade: '; echo $this->idade . '<br><br>'; } } // Instância da classe Pessoa $pessoa = new Pessoa('Luiz', 'Miranda Figueiredo', 27); // Aqui está o clone $pessoa2 = clone $pessoa; $pessoa2->exibir(); ?>
No trecho acima, o objeto {php}$pessoa2{/php} recebe exatamente tudo o que o objeto {php}$pessoa{/php} possui. Como resultado teremos:
Nome: Luiz
Sobrenome: Miranda Figueiredo
Idade: 27
Porém, é meio inútil que você clone um objeto para outro, já que você pode utilizar o objeto criado anteriormente. Por isso, existe um método mágico, que não descrevemos na aula 37 (Métodos mágicos em classes PHP), que faz toda a diferença para os clones em PHP: O método {php}__clone{/php}.
Este método é utilizado no objeto original, que quando clonado, executa as ações de {php}__clone{/php} para realizar as alterações necessárias no novo objeto.
Veja um exemplo de alteração através do método {php}__clone{/php}.
<?php class Pessoa { // Propriedades da classe public $nome; public $sobrenome; public $idade; // Construtor - Define os valores das proprieades public function __construct ( $nome = null, $sobrenome = null, $idade = 0 ) { $this->nome = $nome; $this->sobrenome = $sobrenome; $this->idade = (int) $idade; } // Método para exibir public function exibir () { echo 'Nome: '; echo $this->nome . '<br>'; echo 'Sobrenome: '; echo $this->sobrenome . '<br>'; echo 'Idade: '; echo $this->idade . '<br><br>'; } // Método executado ao criar um clone public function __clone () { // Se for um clone, adiciona a palavra "Clonado" no valor $this->nome = $this->nome . ' (Clonado)'; $this->sobrenome = $this->sobrenome . ' (Clonado)'; $this->idade = $this->idade . ' (Clonado)'; } } // Instância da classe Pessoa $pessoa = new Pessoa('Luiz', 'Miranda Figueiredo', 27); // Aqui está o clone $pessoa2 = clone $pessoa; $pessoa2->exibir(); ?>
Perceba que estou alterando o valor das variáveis da classe no método {php}__clone{/php}, ou seja, agora tenho um novo resultado vindo do clone.
Nome: Luiz (Clonado)
Sobrenome: Miranda Figueiredo (Clonado)
Idade: 27 (Clonado)
Concluindo
A utilização de clones de objetos em PHP é bastante útil quando utilizamos o método {php}__clone{/php}. Dependendo da sua imaginação, você pode facilitar bastante a sua vida.
Não deixe de seguir todas as aulas do nosso curso gratuito de PHP e de PHP Orientado a Objetos.
Caso tenha dúvidas, não hesite em comentar.