Zend framework2 XML RPC web API中的访问entityManager

Zend framework2 XML RPC web API中的访问entityManager,zend-framework2,xml-rpc,entitymanager,Zend Framework2,Xml Rpc,Entitymanager,大家好,我的社区 我目前正在使用Zend Framework 2开发一个XML RPc服务器。 我有一个ServiceController,负责创建服务器 class ServiceController extends AbstractActionController{ public function xmlAction() { $this->handleXML(); $response = $this->getResponse();

大家好,我的社区

我目前正在使用Zend Framework 2开发一个XML RPc服务器。 我有一个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";
    }

}
XMLRPC服务器工作正常。我可以通过客户端调用getAvailablePackages方法,得到“TestResponse”作为响应。 但是问题是,我想在getAvailablePackages中从数据库中选择一些数据,但我不确定如何在非控制器类中访问entityManager


有人知道如何解决这个问题吗?感谢您的回复。

可能的解决方案是建立一个工厂

<?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'));
    }
}

谢谢你这么快回复。看起来很简单。还有一个问题。然后如何访问服务类中的实体管理器?构造函数中有EntityManager作为参数。我想
$this->getEntityManager()
$this->setEntityManager()
或者仅仅是一个私有成员。在你的类中如何进行完全取决于你。我必须在模块类中将新的Faktory映射到我的服务类吗?