Como clonar um objeto em php

Como clonar um objeto em php
Em uma linguagem de programação orientada a objetos, um objeto atua como uma variável de referência. Portanto, se uma variável de objeto for atribuída a outra variável usando o operador de atribuição, ambas as variáveis ​​referenciarão o mesmo local e, se o valor de uma variável for alterado, o valor da outra variável mudará automaticamente.

Neste tutorial, clonaremos um objeto PHP para criar uma cópia do objeto.

Usando o operador de atribuição para copiar um objeto

O valor da variável de objeto pode ser copiado para outra variável no PHP usando clonagem de objeto. No PHP, uma cópia rasa do objeto pode ser criada usando a palavra -chave clone, e uma cópia profunda do objeto pode ser criada usando o método __clone(). No exemplo a seguir, usamos o clone de palavra -chave e o método __clone() Quando uma variável de objeto é atribuída a outra variável.

Use o código abaixo para criar um arquivo php chamado sem reclamar.php, e armazenar o arquivo no local do servidor da web. Aqui, um curso de classe nomeado é declarado; O curso contém uma variável, $ curso_id, e uma função, Detalhes(). A função imprimirá os detalhes do curso com base no ID do curso. Em seguida, um objeto nomeado $ objcourse é declarado para acessar os membros da classe.

Uma vez que o valor de $ curso_id é atribuído usando este objeto e a variável de objeto é atribuída a $ objcrs, Ambas as variáveis ​​usarão o mesmo local na memória para a referência. Portanto, se o valor de um objeto for alterado, o outro objeto será modificado automaticamente se forem copiados.

// Defina uma classe
Curso de aula

// Declare a variável
public $ curso_id;
// Declare Method
Detalhes da função pública ()

// imprima a saída com base na condição
if ($ this-> Course_id == 'CSE-202')

eco "Nome do curso: estrutura de dados
";
eco "Hora de crédito: 2.0
";

caso contrário, se ($ this-> curso_id == 'CSE-305')

eco "Nome do curso: programação orientada a objetos";
eco "
Hora de crédito: 3.0 ";



// Crie objeto da aula do curso
$ objcourse = novo curso ();
// Defina a propriedade
$ objcourse-> curso_id = "CSE-202";
eco "A saída antes de Assiginar Novo Valor:

";
// Ligue para o método
$ objcourse-> detalhes ();
// Objeto de cópia
$ objcrs = $ objcourse;
// Defina um novo valor para o objeto copiado
$ objcrs-> curso_id = "CSE-305";
eco "
A saída após Assiginar Novo Valor:

";
// novamente chame o método
$ objcourse-> detalhes ();
?>

Você obterá a seguinte saída depois de executar o script do servidor da web. Aqui, se o valor de $ objcrs for alterado, o valor de $ objcourse é alterado para o mesmo valor.

Usando a palavra -chave clone para copiar um objeto

O clone A palavra -chave pode ser usada para resolver o problema acima. Use o seguinte código para criar um arquivo nomeado clone.php. A mesma classe é usada aqui. O objeto da classe é clonado para outro objeto usando o clone palavra -chave para criar uma cópia do objeto. Se o valor de uma variável mudar, não mudará o valor da outra variável.

// Defina uma classe
Curso de aula

// Declare a variável
public $ curso_id;
// Declare Method
Detalhes da função pública ()

// imprima a saída com base na condição
if ($ this-> Course_id == 'CSE-202')

eco "Nome do curso: estrutura de dados
";
eco "Hora de crédito: 2.0
";

caso contrário, se ($ this-> curso_id == 'CSE-305')

eco "Nome do curso: Programação Orientada por Objeto
";
eco "Crédito Hora: 3.0 ";



// Crie objeto da aula do curso
$ objcourse = novo curso ();
// Defina a propriedade
$ objcourse-> curso_id = "CSE-202";
eco "A saída do objeto principal antes de clonar e associar um novo valor:

";
// Ligue para o método
$ objcourse-> detalhes ();
// Objeto de clone
$ objcrs = clone $ objcourse;
// Defina um novo valor para o objeto copiado
$ objcrs-> curso_id = "CSE-305";
eco "
A saída do objeto principal após a clonnagem e a associação do novo valor:

";
// Ligue para o método para $ objcourse
$ objcourse-> detalhes ();
eco "
A saída do objeto clonned:

";
// Ligue para o método para $ objcrs
$ objcrs-> detalhes ();
?>

Você obterá a seguinte saída depois de executar o script do servidor da web. Aqui, quando o valor de $ objcrs for alterado, o valor de $ objcourse permanecerá inalterado.

Usando o método __clone () para copiar um objeto

O __clone() O método também pode ser usado para resolver o problema acima. Usando o código bwlow, crie um arquivo chamado Withclonemethod.php. A mesma classe é usada aqui. O __clone() O método é usado no script com a palavra -chave clone. Este método é chamado automaticamente quando um objeto é clonado para outro objeto. De acordo com o script, um novo valor é atribuído ao objeto clonado dentro do __clone() método.

// Defina uma classe
Curso de aula

// Declare a variável
public $ curso_id;
// define __clone () método
função pública __clone ()
$ this-> curso_id = "CSE-305";

// Declare Method
Detalhes da função pública ()

// imprima a saída com base na condição
if ($ this-> Course_id == 'CSE-202')

eco "Nome do curso: estrutura de dados
";
eco "Hora de crédito: 2.0
";

caso contrário, se ($ this-> curso_id == 'CSE-305')

eco "Nome do curso: programação orientada a objetos";
eco "
Hora de crédito: 3.0 ";



// Crie objeto da aula do curso
$ objcourse = novo curso ();
// Defina a propriedade
$ objcourse-> curso_id = "CSE-202";
eco "A saída do objeto principal antes de clonar e associar um novo valor:

";
// Ligue para o método
$ objcourse-> detalhes ();
// Objeto de clone
$ objcrs = clone $ objcourse;
eco "
A saída do objeto principal após a clonning:

";
// Ligue para o método para $ objcourse
$ objcourse-> detalhes ();
eco "
A saída do objeto clonned:

";
// Ligue para o método para $ objcrs
$ objcrs-> detalhes ();
?>

Você obterá a seguinte saída depois de executar o script do servidor da web. Aqui, quando $ objcrs é clonado, seu valor é alterado pelo __clone() método, mas o valor de $ objcourse continua sem alteração. O valor de $ objcourse é impresso antes e depois da clonagem. O valor de $ objcrs está impresso mais tarde.

Conclusão

A clonagem é um recurso útil do PHP que pode ser usado para criar uma cópia de um objeto. Ambos clone palavra -chave e o __clone() O método é mostrado neste tutorial por meio de exemplos simples. Esperamos que este tutorial tenha ajudado você a entender a clonagem de objetos.