См. Руководство о типе жонглирования о возможных приведениях.
Допустимые приведения:
- (int), (целое число) - приведение к целому числу
- (bool), (логическое) - приведение к логическому
- (плавание), (двойное), (реальное) - приведение к плаванию
- (строка) - приведение кстрока
- (массив) - приведение к массиву
- (объект) - приведение к объекту
- (неустановлено) - приведение к NULL (PHP 5)
Вы должны написать Mapper , который выполняет приведение из stdClass в другой конкретный класс.Это не должно быть слишком сложно.
Или, если у вас хакерское настроение, вы можете адаптировать следующий код:
function arrayToObject(array $array, $className) {
return unserialize(sprintf(
'O:%d:"%s"%s',
strlen($className),
$className,
strstr(serialize($array), ':')
));
}
, который псевдокастит массив к объектуопределенный класс.Это работает, сначала сериализовав массив, а затем изменив сериализованные данные, чтобы они представляли определенный класс.Результат не сериализуется в экземпляр этого класса.Но, как я уже сказал, он хакерский, так что ожидайте побочных эффектов.
Для объекта к объекту код будет
function objectToObject($instance, $className) {
return unserialize(sprintf(
'O:%d:"%s"%s',
strlen($className),
$className,
strstr(strstr(serialize($instance), '"'), ':')
));
}