- var_dump: documentation ( source)
- class_exists: documentation ( source)
- unserialize: documentation ( source)
- serialize: documentation ( source)
- preg_replace: documentation ( source)
<?php
function ClassTypeCast(&$obj,$class_type){
if(class_exists($class_type,true))
{
$obj = unserialize(preg_replace("/^O:[0-9]+:\"[^\"]+\":/i",
"O:".strlen($class_type).":\"".$class_type."\":", serialize($obj)));
}
}
class MyClass {
private $foo = null;
function setString($str) {
$this->foo = $str; }
function awful() {
return "This is awful!"; }
}
class MyClass2 {
private $foo2 = null;
function setString2($str) {
$this->foo2 = $str; }
function awful()
{
return "This is awesome!" . PHP_EOL;
}
}
$my1 = new MyClass();
$my1->setString("kill me now");
ClassTypeCast($my1, "MyClass2");
echo $my1->awful() . PHP_EOL;
var_dump($my1);