Есть способ, который я использовал ранее, но это скорее хак, вы можете преобразовать массив в стандартный класс, затем сериализовать его в строку, затем, используя манипуляции со строками, изменить имя класса и затем снять сериализацию объекта:
function ClassCaster($class, $object)
{
return unserialize(preg_replace('/^O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', serialize($object)));
}
class SampleClass
{
public function __wakeup(){ /*Generic wake up from serialization */}
}
$array = array(/* ... */);
$SampleClass = ClassCaster("SampleClass",(object)$array);
Это не симпатичный метод, но я считаю, что это единственный способ взломать.