2013-02-13 2 views
0

JSON, PHP 등으로 일련 번호를 지정할 수 있어야하는 개체가 있습니다. 나는 JSONSerializer와 같은 것들을 가지고 있으며 serialize()가 가능하다. 이제는 개체가 JSONSerializer 또는 serialize()로 전달 될 수있는 개체로 변환하는 데 필요한 논리가 필요합니다. 기본적으로 기본 유형이거나이 조건과 일치하는 요소 만 포함하는 배열입니다.비 직렬화 : 명명 및 구현

두 질문 :

  1. 어떻게 직렬화하기 전에이 단계를 부릅니까? "배열"? 내 개체에 toArray() 메서드를 제공 할 생각입니다. 이 메소드를 지정하는 인터페이스를 구현하기를 원합니다. 누구든지 "Arrayable"에 대해 더 좋은 아이디어가 있습니까?

  2. 비 직렬화에 대해 가장 좋은 방법은 무엇입니까? 각 객체에 static newFromArray 메서드를 사용할 수 있습니다. 정적 코드를 좋아하지 않아. "배열"에서 주어진 유형의 객체를 생성 할 수있는 팩토리에 대한 의견?

참고 : 이것은 PHP 5.3에서 작동해야합니다.

+1

이 부분을보실 수 있습니다 : https://github.com/sebastianbergmann/pson 이것을 사용하여 PHP 객체를 json으로 변환하고 되돌릴 수 있습니다. PHPUnit을 작성한 사람 Sebastian Bergman이 작성했습니다 – MarcDefiant

+0

고마워요, 매우 흥미 롭습니다. 이 프로젝트에서는 PHP 5.4를 사용할 수 없지만 필자는이를 살펴볼 것입니다. –

+0

사실 PSON에서 취한 접근 방식을 좋아하지 않습니다. 직렬화에는 클래스 이름이나 비공개 상태가 없어야합니다. 또한 필드 이름과 독립적이어야하기 때문에 모든 키를 직접 지정하려고합니다. –

답변

0

Symfony Serializer Component은 두 가지 질문에 대해 하나의 대답을 제공합니다. 객체에서 배열로의 "normalization"과 역 "denormalization"단계를 호출합니다.

"디시리얼라이저"또는 "비정규 화기"를 만들 때 나는 추상적 인 팩토리를 만드는 것이 매우 유용하다는 것을 발견했다. 구성 문제를 해결하고 사용자가 사용중인 정확한 디시리얼라이저를 알지 못하게 할 수 있습니다. 예를 들어 this deserializer factorySerialization component을 기반으로합니다.

관련 문제