PHP | Type Casting and Conversion of an Object to an Object of other class (original) (raw)

Last Updated : 09 Jan, 2019

Given a PHP class object and the task is to convert or cast this object into object of another class.Approach 1: Objects which are instances of a standard pre-defined class can be converted into object of another standard class.Example:

php `

a=(float)a = (float) a=(float)a; var_dump($a); // float to double a=(double)a = (double) a=(double)a; var_dump($a); // double to real a=(real)a = (real) a=(real)a; var_dump($a); // real to int a=(int)a = (int) a=(int)a; var_dump($a); // int to integer a=(integer)a = (integer) a=(integer)a; var_dump($a); // integer to bool a=(bool)a = (bool) a=(bool)a; var_dump($a); // bool to boolean a=(boolean)a = (boolean) a=(boolean)a; var_dump($a); // boolean to string a=(string)a = (string) a=(string)a; var_dump($a); // string to array a=(array)a = (array) a=(array)a; var_dump($a); // array to object a=(object)a = (object) a=(object)a; var_dump($a); // object to unset/NULL a=(unset)a = (unset) a=(unset)a; var_dump($a); ?>

`

Output:

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

Approach 2: Create a constructor for final class and add a foreach loop for assignment of all properties of initial class to instance of final class.Example:

php `

property=>property => property=>value) { this−>this->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=newGeeks2(object1 = new Geeks2(object1=newGeeks2(object1); // Printing object of class Geeks2 print_r($object1); ?>

`

Output:

Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )

Approach 3: Write a function to convert object of the initial class into serialized data using serialize() method. Unserialize this serialized data into instance of the final class using unserialize() method.Note: Member functions cannot be transferred using this approach. This approach can only be used if initial class contains only variables as members.Example:

php `

object1=convertObjectClass(object1 = convertObjectClass(object1=convertObjectClass(object1, 'Geeks2'); // Printing object of class Geeks2 print_r($object1); ?>

`

Output:

Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )

Note: In general, PHP doesn't allow type casting of user defined classes, while conversion/casting can be achieved indirectly by approaches presented above.