【问题标题】:symfony2 SoapServer EntityManager injection in servicesymfony2 SoapServer EntityManager 注入服务
【发布时间】:2014-05-02 10:38:41
【问题描述】:

我在 symfony2 中遇到了原生 php SoapServer 的问题。 SoapServer 使用 symfony2 中的“UserService”服务类,应该使用注入的 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?

提前致谢!

马丁

【问题讨论】:

    标签: php symfony soap code-injection soapserver


    【解决方案1】:

    您可以使用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 并将其注入您的服务。

    【讨论】:

    • 谢谢,setObject() 似乎是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多