API 용 PHP 래퍼 프로젝트를 작성하고 있습니다. 내 응답 객체 내에서 JSON 블록을 객체에 대해 deserialize하고 싶습니다. symfony 표준 프레임 워크 프로젝트는 아니며 symfony 구성 요소가있는 PHP 프로젝트입니다.JSM Serializer를 수동으로 초기화하는 방법이 있습니까?
심포니 프로젝트 내에서단순히
$serializer = $this->get('serializer');
를 부를 것이다과 함께 할 수. 물론 클래스는 ContainerAware가 아니며 일반적으로 컨테이너 나 서비스에 대한 액세스 권한도 없습니다. JMS serializer를 API로 사용해야합니다. 또한 구성자를 사용하여 JMS Serializer를 사용하기위한 래퍼를 작성하고 있습니다.
수동으로 JMS 시리얼 라이저 (JMS\Serializer\Serializer
)를 초기화 할 수 있습니까? JMS 프로 시리얼의 services.xml 파일 내에서
가 다음과 같은 정의이다 : 나는 다른 후 하나 개의 객체를 초기화 할 수
<service id="jms_serializer.serializer" class="%jms_serializer.serializer.class%" public="false">
<argument type="service" id="jms_serializer.metadata_factory" />
<argument type="service" id="jms_serializer.handler_registry" />
<argument type="service" id="jms_serializer.object_constructor" />
<argument type="collection" /><!-- Serialization Visitors -->
<argument type="collection" /><!-- Deserialization Visitors -->
<argument type="service" id="jms_serializer.event_dispatcher" />
</service>
...
<service id="jms_serializer.metadata_factory" class="%jms_serializer.metadata.metadata_factory.class%" public="false">
<argument type="service" id="jms_serializer.metadata.lazy_loading_driver" />
<argument>Metadata\ClassHierarchyMetadata</argument>
<argument />
<call method="setCache">
<argument type="service" id="jms_serializer.metadata.cache" on-invalid="ignore" />
</call>
</service>
...
<service id="jms_serializer.metadata.lazy_loading_driver" class="%jms_serializer.metadata.lazy_loading_driver.class%" public="false">
<argument type="service" id="service_container" />
<argument>jms_serializer.metadata_driver</argument>
</service>
...
하지만 여전히 지점에 붙어 될 경우 서비스 컨테이너 (<argument type="service" id="service_container" />
) 필요합니다.
JMS 직렬화기를 수동으로 초기화하는 방법이 있습니까?
그래서 프로젝트에만 사용 S2 구성 요소를하지 :
건설 부분 https://github.com/schmittjoh/serializer/tree/master/doc은 여기에서 찾을 수 있습니다 :
패키지 문서는 당신이 가야 할 것인가? – Cerad
예, 정확하게 (질문을 업데이트했습니다) –
나는 그것이 고통스러운 과정 일 것이라고 생각합니다. 정말로 프레임 워크를 사용할 수 없다면 Symfony \ Serializer 컴포넌트 위에 빌드하십시오. – Cerad