symfony2 SoapServer EntityManager注入服务

时间:2014-05-02 10:38:41

标签: php symfony soap code-injection soapserver

我在symfony2中遇到了本机php SoapServer的问题。 SoapServer使用" UserService" symfony2中的Service-Class,应该通过注入symfony2 EntityManager进行实例化,以便我可以访问我的" UserRepository"。

澄清:

皂服务器:

$oSOAPServer = new \SoapServer('/path/to/wsdl');
$oSOAPServer->setClass("my\Namespace\UserService");
$oSOAPServer->handle();

服务:

use \Doctrine\ORM\EntityManager as EntityManager;

class UserService
{
    protected $em;
    public function __construct(EntityManager $em) {
        $this->em = $em;
    }
...

问题是:SoapServer始终返回内部服务器错误。 服务本身直接在symfony2中调用。 甚至可以在SoapServer调用/实例化时注入EntityManager吗?

提前致谢!

马丁

1 个答案:

答案 0 :(得分:0)

您可以使用SoapServer::setObject()而不是使用SoapServer::setClass(),并在以下位置传递您的服务:

$oSOAPServer = new \SoapServer('/path/to/wsdl');
$oSOAPServer->setObject($container->get('my_service'));
$oSOAPServer->handle();

Symfony文档中记录了实施soap服务器:How to Create a SOAP Web Service in a Symfony2 Controller

此外,如果您只需要一个存储库,请不要注入整个实体管理器。注册您的repository as a service并将其注入您的服务。