Cómo clonar un objeto en PHP

Cómo clonar un objeto en PHP
En un lenguaje de programación orientado a objetos, un objeto actúa como una variable de referencia. Por lo tanto, si se asigna una variable de objeto a otra variable utilizando el operador de asignación, ambas variables harán referencia a la misma ubicación, y si se cambia el valor de una variable, entonces el valor de la otra variable cambiará automáticamente.

En este tutorial, clonaremos un objeto PHP para crear una copia del objeto.

Uso del operador de asignación para copiar un objeto

El valor de la variable de objeto se puede copiar a otra variable en PHP utilizando la clonación del objeto. En PHP, se puede crear una copia superficial del objeto utilizando la palabra clave clon, y se puede crear una copia profunda del objeto utilizando el método __clon(). En el siguiente ejemplo, usamos el clon de palabras clave y el método __clon() Cuando una variable de objeto se asigna a otra variable.

Use el código a continuación para crear un archivo PHP llamado sin clon.php, y almacene el archivo en la ubicación del servidor web. Aquí, se declara una clase llamada curso; El curso contiene una variable, $ curso_id, y una función, Detalles(). La función imprimirá los detalles del curso en función de la identificación del curso. A continuación, un objeto llamado $ objcourse se declara acceder a los miembros de la clase.

Una vez que el valor de $ curso_id se asigna usando este objeto y la variable de objeto se asigna a $ objcrs, Ambas variables utilizarán la misma ubicación en la memoria para la referencia. Por lo tanto, si se cambia el valor de un objeto, entonces el otro objeto se modificará automáticamente si se copian.

// Defina una clase
Curso de clase

// declarar variable
público $ curso_id;
// Declarar método
Detalles de la función pública ()

// imprime la salida en función de la condición
if ($ this-> curso_id == 'CSE-202')

Echo "Nombre del curso: Estructura de datos
";
Echo "Hora de crédito: 2.0
";

else if ($ this-> curso_id == 'CSE-305')

echo "Nombre del curso: programación orientada a objetos";
eco "
Hora de crédito: 3.0 ";



// Crear objeto de clase de curso
$ objCourse = nuevo curso ();
// establecer propiedad
$ objCourse-> curso_id = "CSE-202";
eco "La salida antes de asignar un nuevo valor:

";
// llamar al método
$ objCourse-> detalles ();
// Copiar objeto
$ objcrs = $ objCourse;
// Establecer un nuevo valor para el objeto copiado
$ objcrs-> curso_id = "CSE-305";
eco "
La salida después de asignar un nuevo valor:

";
// nuevamente llame al método
$ objCourse-> detalles ();
?>

Obtendrá la siguiente salida después de ejecutar el script desde el servidor web. Aquí, si se cambia el valor de $ objcrs, entonces el valor de $ objcourse se cambia al mismo valor.

Uso de la palabra clave clon para copiar un objeto

El clon La palabra clave se puede usar para resolver el problema anterior. Use el siguiente código para crear un archivo llamado clon.php. La misma clase se usa aquí. El objeto de la clase se cloniza a otro objeto usando el clon Palabra clave para crear una copia del objeto. Si el valor de una variable cambia, no cambiará el valor de la otra variable.

// Defina una clase
Curso de clase

// declarar variable
público $ curso_id;
// Declarar método
Detalles de la función pública ()

// imprime la salida en función de la condición
if ($ this-> curso_id == 'CSE-202')

Echo "Nombre del curso: Estructura de datos
";
Echo "Hora de crédito: 2.0
";

else if ($ this-> curso_id == 'CSE-305')

Echo "Nombre del curso: Programación orientada a objetos
";
Echo "Hora de crédito: 3.0 ";



// Crear objeto de clase de curso
$ objCourse = nuevo curso ();
// establecer propiedad
$ objCourse-> curso_id = "CSE-202";
eco "La salida del objeto principal antes de clonarse y asignar un nuevo valor:

";
// llamar al método
$ objCourse-> detalles ();
// objeto clon
$ objcrs = clon $ objcourse;
// Establecer un nuevo valor para el objeto copiado
$ objcrs-> curso_id = "CSE-305";
eco "
La salida del objeto principal después de clonarse y asignar un nuevo valor:

";
// llame al método para $ objcourse
$ objCourse-> detalles ();
eco "
La salida del objeto clonado:

";
// llame al método para $ objcrs
$ objcrs-> detalles ();
?>

Obtendrá la siguiente salida después de ejecutar el script desde el servidor web. Aquí, cuando se cambia el valor de $ objcrs, el valor de $ objcourse permanecerá sin cambios.

Usando el método __clone () para copiar un objeto

El __clon() El método también se puede utilizar para resolver el problema anterior. Usando el código bwlow, cree un archivo llamado con clonemethod.php. La misma clase se usa aquí. El __clon() El método se utiliza en el script con la palabra clave clon. Este método se llama automáticamente cuando un objeto se clona a otro objeto. Según el script, se asigna un nuevo valor para el objeto clonado dentro del __clon() método.

// Defina una clase
Curso de clase

// declarar variable
público $ curso_id;
// Definir el método __clone ()
función pública __clone ()
$ this-> curso_id = "CSE-305";

// Declarar método
Detalles de la función pública ()

// imprime la salida en función de la condición
if ($ this-> curso_id == 'CSE-202')

Echo "Nombre del curso: Estructura de datos
";
Echo "Hora de crédito: 2.0
";

else if ($ this-> curso_id == 'CSE-305')

echo "Nombre del curso: programación orientada a objetos";
eco "
Hora de crédito: 3.0 ";



// Crear objeto de clase de curso
$ objCourse = nuevo curso ();
// establecer propiedad
$ objCourse-> curso_id = "CSE-202";
eco "La salida del objeto principal antes de clonarse y asignar un nuevo valor:

";
// llamar al método
$ objCourse-> detalles ();
// objeto clon
$ objcrs = clon $ objcourse;
eco "
La salida del objeto principal después de clonarse:

";
// llame al método para $ objcourse
$ objCourse-> detalles ();
eco "
La salida del objeto clonado:

";
// llame al método para $ objcrs
$ objcrs-> detalles ();
?>

Obtendrá la siguiente salida después de ejecutar el script desde el servidor web. Aquí, cuando $ objcrs está clonado, su valor es cambiado por el __clon() método, pero el valor de $ objcourse permanece sin cambios. El valor de $ objcourse se imprime antes y después de la clonación. El valor de $ objcrs se imprime más tarde.

Conclusión

La clonación es una característica útil de PHP que se puede usar para crear una copia de un objeto. Ambos clon palabra clave y el __clon() El método se muestra en este tutorial a través de ejemplos simples. Esperamos que este tutorial te ayude a comprender la clonación de objetos.