访问XML RPC web API中的entityManager



你好Stackoverflow社区。

我目前正在使用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 ZendXmlRpcServer();
        $xmlServer->setClass('BeamModelserviceService', '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('DoctrineORMEntityManager'); 
        return "testresponse";
    }
}

XML RPC服务器工作正常。我可以用客户端调用getAvailablePackages方法,并得到"testresponss"作为响应。然而,问题是,我想从getAvailablePackages中的数据库中选择一些数据,但我不确定如何访问非Controller类中的entityManager。

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

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

<?php
namespace ....;
use ZendServiceManagerServiceLocatorInterface;
use ZendServiceManagerFactoryInterface;
class ServiceFactory implements FactoryInterface
{
    public function createService (ServiceLocatorInterface $serviceLocator)
    {
        return new Service ($serviceLocator->get ('DoctrineORMEntityManager'));
    }
}

因此,您将能够访问实体管理器。

最新更新