2014-10-10 1 views
0

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 직렬화기를 수동으로 초기화하는 방법이 있습니까?

+0

그래서 프로젝트에만 사용 S2 구성 요소를하지 :

건설 부분 https://github.com/schmittjoh/serializer/tree/master/doc은 여기에서 찾을 수 있습니다 :

패키지 문서는 당신이 가야 할 것인가? – Cerad

+0

예, 정확하게 (질문을 업데이트했습니다) –

+0

나는 그것이 고통스러운 과정 일 것이라고 생각합니다. 정말로 프레임 워크를 사용할 수 없다면 Symfony \ Serializer 컴포넌트 위에 빌드하십시오. – Cerad

답변

관련 문제