Вы можете сделать это с помощью некоторой черной магии, хотя я бы серьезно спросил , почему у вас есть это требование в первую очередь. Это говорит о том, что с вашим дизайном что-то не так.
Тем не менее:
function change_class($object, $new_class) {
preg_match('~^O:[0-9]+:"[^"]+":(.+)$~', serialize($object), $matches);
return unserialize(sprintf('O:%s:"%s":%s', strlen($new_class), $new_class, $matches[1]));
}
Это подчиняется тем же ограничениям, что и сериализация в целом, что означает, что ссылки на другие объекты или ресурсы теряются.