Symfony 3使用__construct注入服务中的服务

时间:2017-08-14 16:46:44

标签: php symfony

在以下服务中注入服务时遇到问题: https://symfony.com/doc/current/service_container.html#injecting-services-config-into-a-service

此代码:

$wsdl = 'https://your.api/path?wsdl';
$client = new SoapClient($wsdl);
$multipleSearchValues = [1, 2, 3, 4];
$queryData = ['yourFieldName' => $multipleSearchValues];
$results = $client->YourApiMethod($queryData);
print_r($results);

引发此错误:

  

类型错误:传递给ServicesBundle \ Services \ Services :: __ construct()的参数3必须实现接口Symfony \ Component \ HttpFoundation \ Session \ SessionInterface,没有给出,在/ home / admin-daniel / symfony-test-sites中调用第412行/july262017/var/cache/dev/appDevDebugProjectContainer.php

当我从控制器中调用这些功能中的任何一个时。

我迷失了。似乎我按照指南说的但没有工作....

我在某处错过了某些东西......

3 个答案:

答案 0 :(得分:2)

如果您需要注入Session

service:
   my.service.name:
      class: ..\MyClassName
      arguments: 
        session: "@session"

答案 1 :(得分:0)

它在第412行的/home/admin-daniel/symfony-test-sites/july262017/var/cache/dev/appDevDebugProjectContainer.php中说 你需要传递SessionInterface类型的对象作为第三个参数。 你没有这样做。

您需要将私有属性$sessInt添加到您的Services类。因为在构造函数中有$this->sessInt = $sessInt;

这将是依赖注入。

答案 2 :(得分:0)

您缺少创建方法:

public static function create(ContainerInterface $container) {
        return new static(
          $container->get('yourvariable')
        );
    }