Friday, October 24, 2025
HomeLanguagesPHP | Type Casting and Conversion of an Object to an Object...

PHP | Type Casting and Conversion of an Object to an Object of other class

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
// 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);
  
?>


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
// PHP program to convert an class object
// to object of another class
  
// Original class
class Geeks1 {
      
    var $a = 'neveropen';
      
    function print_neveropen() {
        print('neveropen');
    }
}
  
// 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);
  
?>


Output:

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

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
// PHP program to convert an class object 
// to object of another class
  
// Original class
class Geeks1 {
      
    var $a = 'neveropen';
      
    function print_neveropen() {
        print('neveropen');
    }
}
  
// 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);
  
?>


Output:

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

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

RELATED ARTICLES

Most Popular

Dominic
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS