2011-09-16 8 views
1

protobuf를 사용하여 역 직렬화 할 필요가있는 서버로부터 응답을 얻고 있습니다. 정의가 포함 된 .proto 파일이 있어야한다는 것을 알아야합니다.PHP에서 protobuf 직렬화를 수행하는 방법

어떻게 응답 문자열을 구문 분석하고 PHP 객체를 만들 수 있습니까?

업데이트 : 사용 가능한 라이브러리 (http://code.google.com/p/pb4php/)를 사용해 보았지만 'Protofile type uint64 unknown!'메시지와 함께 예외가 발생했습니다. 어떤 생각이라도 어떻게 피할 수 있습니까?

답변

0

도서관 코드를 조사한 결과 uint64가 지원되지 않는다는 사실을 알았습니다. 이제 서버에서 uint64로 얻는 필드는 만료 시간입니다. 내가 100 년을 만료로 간주한다고 할지라도 결코 int 범위를 넘어서는 것은 아닙니다. 그래서 uint64를 int 데이터 유형을 파싱 (ping)하는 데 연결 시켰습니다.

좋은 해결책이 아니며 개인적인 용도에 완전히 의존하지만.

1

protobuf lib for php을 다운로드해야합니다. 그것은 당신을 위해 .proto에서 PHP 클래스를 생성합니다 컴파일러 (발전기) 함께 제공됩니다.

+0

이 라이브러리를 사용하려고했지만 나에게 적합하지 않습니다. 'Protofile type uint64 unknown!'오류가 발생합니다. 어떤 생각이 그것을 해결하는 방법? –

+1

@CM : 귀하의 질문에 그 정보를 추가하는 것이 가치 있다고 생각합니다. 그리고'uint64' 타입의 경우, 그것을 구현해야합니다. 이 라이브러리의 홈페이지에 쓰여져 있습니다 : * "이 프로젝트는 베타 상태입니다. 프로토 타입 파일에 대한 파서를 완성하고 메시지 읽기 및 쓰기를 위해 Int, Enum, String 및 Nested Messages를 구현했습니다. 부담없이 구현을 완료하십시오. "* – hakre

+0

이 라이브러리는 오래되었습니다. –

관련 문제