가능한 캐스트 에 대해서는 Type Juggling 에 대한 설명서를 참조하십시오 .
허용되는 캐스트는 다음과 같습니다.
- (int), (integer)-정수로 캐스트
- (bool), (boolean)-부울로 캐스트
- (float), (double), (real)-부동으로 캐스팅
- (문자열)-문자열로 캐스트
- (배열)-배열로 캐스트
- (객체)-객체로 캐스트
- (설정되지 않음)-NULL로 캐스트 (PHP 5)
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), '"'), ':')
));
}