2013-08-19 1 views
0

안녕하세요 Stackoverflow 커뮤니티.XML의 엔티티 관리자 RPC 웹 API

나는 현재 젠드 프레임 워크 2. 내가 서버를 만들기위한 담당하는 ServiceController이

class ServiceController extends AbstractActionController{ 

    public function xmlAction() 
    { 
     $this->handleXML(); 
     $response = $this->getResponse(); 
     return $response; 
    } 

    private function handleXML() 
    { 
     $xmlServer = new Zend\XmlRpc\Server(); 
     $xmlServer->setClass('Beam\Model\service\Service', 'service'); 
     echo $xmlServer->handle(); 
    } 

} 

ServiceClass 내 Webapi

class Service{ 

    /** 
    * getAvailablePackages 
    * 
    * getAvailablePackages is responsible for returning all packages which reference a given licensenumber 
    * 
    * @param string $licenseNumber 
    * @return String 
    */ 
    public function getAvailablePackages($licenseNumber){ 

     //need to access the entityManager 
     $em = $this->getServiceLocator->get('Doctrine\ORM\EntityManager'); 

     return "testresponse"; 
    } 

} 

는 IS와 XML-RPC 서버를 개발하고 XML RPC 서버가 정상적으로 작동합니다. 클라이언트와 함께 getAvailablePackages 메소드를 호출 할 수 있으며 응답으로 "testrespons"를 얻습니다. 그러나 문제는, getAvailablePackages 내 데이터베이스에서 일부 데이터를 선택하고 싶습니다 있지만 non 컨트롤러 클래스에서 entityManager 액세스하는 방법을 잘 모르겠습니다.

누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 귀하의 답변에 감사드립니다.

답변

0

가능한 해결책은 공장을 마련하는 것입니다.

<?php 
namespace ....; 

use Zend\ServiceManager\ServiceLocatorInterface; 
use Zend\ServiceManager\FactoryInterface; 

class ServiceFactory implements FactoryInterface 
{ 
    public function createService (ServiceLocatorInterface $serviceLocator) 
    { 
     return new Service ($serviceLocator->get ('Doctrine\ORM\EntityManager')); 
    } 
} 

따라서 Entity manager에 액세스 할 수 있습니다.

+0

너무 빨리 답장을 보내 주셔서 감사합니다. 꽤 똑바로 보입니다. 한 가지 더 묻습니다. 내 Service 클래스의 Entity Manager에 어떻게 액세스합니까? – Adrian

+0

생성자의 매개 변수로 EntityManager가 있습니다. 나는'$ this-> getEntityManager()'와'$ this-> setEntityManager()'또는 단순한 private 멤버라고 가정합니다. 수업 시간에 어떻게 할 것인가는 전적으로 당신에게 달렸습니다. – akond

+0

새 클래스를 모듈 클래스의 서비스 클래스에 매핑해야합니까? – Adrian