0

你好 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。

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

4

1 回答 1

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

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

于 2013-08-19T14:39:46.893 回答