当前位置: 首页 > 知识库问答 >
问题:

Symfony 4中的外部服务配置

郭浩穰
2023-03-14

我正在尝试在服务中使用导入。yaml将一些服务定义移动到单独的文件中。在这里你可以在symfony doc中找到这个。

但是当我试图这样做的时候,我得到了一个错误:

无法自动连线服务“App\Domain\Test\Test”:方法“\uu construct()”的参数“$param”必须具有类型提示或显式给定值。

以下是我的配置文件:

# services.yaml
imports:
    - { resource: services/test.yaml }

services:
    _defaults:
        autowire: true      
        autoconfigure: true 
        public: false       

    App\:
        resource: '../src/*'
        exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

# test.yaml
parameters:
    param: 'some param'

services:
    App\Domain\Test\Test:
        public: true
        autowire: true
        arguments:
            $param: '%param%'

这里是服务:

namespace App\Domain\Test;

class Test
{
    private $mailer;
    private $param;

    public function __construct(\Swift_Mailer $mailer, string $param)
    {
        $this->mailer = $mailer;
        $this->param = $param;
    }
}

如果我将参数和服务移动到服务中,这将很好地工作。亚马尔。有人知道我做错了什么吗?

共有1个答案

谢洛城
2023-03-14

问题是,您的第一个文件试图作为服务加载到您的服务中,但无法自动填充参数字符串$param

一个好的解决方案可能是排除您的服务:

services:
    App\:
        resource: '../src/*'
        exclude: '../src/{Entity,Migrations,Tests,Kernel.php,Domain/Test.php}'

另一个解决方案是简单地将此定义放在服务中。yaml文件。

您也可以考虑加载应用\某物\:而不是完整的命名空间,但是如果您尝试在跨命名空间定义中自动连接,这会有缺点。(

 类似资料:
  • 我有一个小的外部库,它公开了许多类。 在我的symfony4项目中,我想声明我的类来自供应商,作为带有autowire和public的服务。因此,我将我的库包含在composer中,并将类似这样的psr配置添加到composer中。json: 在那之后,我试图改变我的服务。yaml进入symfony,如下所示: 如果启动测试或运行应用程序,则会返回以下错误: 如果我申报服役。yaml此界面工作正常

  • 外部服务器通常封装了外部数据封装器(foreign-data wrapper)用来访问一个外部数据源所需的连接信息。在主窗口中,点击 “其他”->“外部服务器”来打开外部服务器的对象列表。 若要访问外部 PostgreSQL 服务器的数据,你可以安装 postgres_fdw 扩展。右击外部服务器对象列表的任意位置并选择“安装 postgres_fdw 扩展”。 外部服务器设计器 “外部服务器设计

  • 外部服务器通常封装了外部数据封装器(foreign-data wrapper)用来访问一个外部数据源所需的连接信息。在主窗口中,点击 “其他”-> “外部服务器”来打开外部服务器的对象列表。 若要访问外部 PostgreSQL 服务器的数据,你可以安装 postgres_fdw 扩展。按住 Control 键并点按外部服务器对象列表的任意位置,然后选择“安装 postgres_fdw 扩展”。 外

  • 外部服务器通常封装了外部数据封装器(foreign-data wrapper)用来访问一个外部数据源所需的连接信息。在主窗口中,点击 “其他”->“外部服务器”来打开外部服务器的对象列表。 若要访问外部 PostgreSQL 服务器的数据,你可以安装 postgres_fdw 扩展。右击外部服务器对象列表的任意位置并选择“安装 postgres_fdw 扩展”。 外部服务器设计器 “外部服务器设计

  • 我正在尝试在WebLogic 10.3.5上创建一个MDB(EJB 3.0)。在外部AMQ服务器上监听队列。经过大量工作和教程组合,我在webLogic上部署时遇到以下错误。 [EJB:015027]消息驱动的EJB是事务性的,但JNDI名称ActiveMQXAConnectionFactory引用的JMS连接工厂不是JMS XA连接工厂。 以下是我所做工作的简要介绍: 我已经将相应的库添加到我的

  • 假设我有一个不在Kubernetes上托管的服务。我还在kubernetes集群上设置了入口控制器和证书管理器。 因为使用kubernetes入口来控制对服务的访问非常简单,所以我想要一个指向非kubernetes服务的kubernetes入口。 例如,我有一个托管在<代码>https://10.0.40.1:5678(需要ssl,但需要自签名证书),并希望访问服务。实例com。