Zend framework2 XML RPC web API中的访问entityManager
大家好,我的社区 我目前正在使用Zend Framework 2开发一个XML RPc服务器。 我有一个ServiceController,负责创建服务器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();
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映射到我的服务类吗?