Dado un objeto de clase PHP y la tarea es convertir o convertir este objeto en un objeto de otra clase.
Enfoque 1: los objetos que son instancias de una clase predefinida estándar se pueden convertir en objetos de otra clase estándar.
Ejemplo:
<?php // PHP program to show // standard type casting $a = 1; var_dump($a); // int to float $a = (float) $a; var_dump($a); // float to double $a = (double) $a; var_dump($a); // double to real $a = (real) $a; var_dump($a); // real to int $a = (int) $a; var_dump($a); // int to integer $a = (integer) $a; var_dump($a); // integer to bool $a = (bool) $a; var_dump($a); // bool to boolean $a = (boolean) $a; var_dump($a); // boolean to string $a = (string) $a; var_dump($a); // string to array $a = (array) $a; var_dump($a); // array to object $a = (object) $a; var_dump($a); // object to unset/NULL $a = (unset) $a; var_dump($a); ?>
int(1) float(1) float(1) float(1) int(1) int(1) bool(true) bool(true) string(1) "1" array(1) { [0]=> string(1) "1" } object(stdClass)#1 (1) { [0]=> string(1) "1" } NULL
Enfoque 2: Cree un constructor para la clase final y agregue un ciclo foreach para la asignación de todas las propiedades de la clase inicial a la instancia de la clase final.
Ejemplo:
<?php // PHP program to convert an class object // to object of another class // Original class class Geeks1 { var $a = 'geeksforgeeks'; function print_geeksforgeeks() { print('geeksforgeeks'); } } // Final class class Geeks2 { // Constructor function of class Geeks2 public function __construct($object) { // Initializing class properties foreach($object as $property => $value) { $this->$property = $value; } } } // Initializing an object of class Geeks1 $object1 = new Geeks1(); // Printing original object of class Geeks1 print_r($object1); // Initializing an object of class Geeks2 // using an object of class Geeks1 $object1 = new Geeks2($object1); // Printing object of class Geeks2 print_r($object1); ?>
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )
Enfoque 3: escriba una función para convertir el objeto de la clase inicial en datos serializados utilizando el método serialize(). Deserialice estos datos serializados en una instancia de la clase final usando el método unserialize().
Nota: las funciones de los miembros no se pueden transferir con este enfoque. Este enfoque solo se puede usar si la clase inicial contiene solo variables como miembros.
Ejemplo:
<?php // PHP program to convert an class object // to object of another class // Original class class Geeks1 { var $a = 'geeksforgeeks'; function print_geeksforgeeks() { print('geeksforgeeks'); } } // Final class class Geeks2 { /* Empty abstract class */ } // Function to convert class of given object function convertObjectClass($object, $final_class) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($final_class), $final_class, strstr(strstr(serialize($object), '"'), ':') )); } // Initializing an object of class Geeks2 $object1 = new Geeks1(); // Printing original object of class Geeks1 print_r($object1); // Converting an object of class Geeks1 // into an object of class Geeks2 $object1 = convertObjectClass($object1, 'Geeks2'); // Printing object of class Geeks2 print_r($object1); ?>
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )
Nota: en general, PHP no permite la conversión de tipos de clases definidas por el usuario, mientras que la conversión/transmisión se puede lograr indirectamente mediante los enfoques presentados anteriormente.
Publicación traducida automáticamente
Artículo escrito por Harshit Saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA