访问XML RPC Web API中的entityManager

时间:2013-08-19 13:45:21

标签: zend-framework2 xml-rpc entitymanager

Hello 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 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";
    }

}

XML RPC服务器工作正常。我可以使用客户端调用getAvailablePackages方法,并将“testrespons”作为响应。 但问题是,我想从getAvailablePackages中的数据库中选择一些数据,但我不知道如何在非Controller类中访问entityManager。

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

1 个答案:

答案 0 :(得分: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'));
    }
}

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