Hello Stackoverflow社区。 p>
我目前正在使用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。
有没有人知道如何解决这个问题?感谢您的回复。
答案 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'));
}
}
因此,您将能够访问实体管理器。