Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何覆盖自动连线symfony服务?_Php_Symfony_Autowired_Symfony4 - Fatal编程技术网

Php 如何覆盖自动连线symfony服务?

Php 如何覆盖自动连线symfony服务?,php,symfony,autowired,symfony4,Php,Symfony,Autowired,Symfony4,我正在做一个Symfony 4项目,我读过 我的问题不是自动布线,而是导入的文件 表示可以在许多文件中导入服务 在我的项目中,我在config文件夹中有service.yaml,它导入services文件夹中的所有服务 imports: - { resource: './services/admin.yaml'} - { resource: './services/front.yaml'} - { resource: './services/core.yaml' } s

我正在做一个Symfony 4项目,我读过

我的问题不是自动布线,而是导入的文件

表示可以在许多文件中导入服务

在我的项目中,我在
config
文件夹中有
service.yaml
,它导入
services
文件夹中的所有服务

imports:
    - { resource: './services/admin.yaml'}
    - { resource: './services/front.yaml'}
    - { resource: './services/core.yaml' }

services:
    _defaults:
    autowire: true
    autoconfigure: true
所以我需要重写服务自动连接,因为它在构造函数中有两个字符串,我需要手动连接这些参数

extranet.form.data_subscriber.remove_empty_reference_fields:
    class: Extranet\Admin\Form\DataSubscriber\RemoveEmptyFieldsSubscriber
    arguments:
        $collectionName: references
        $childName: name
Extranet\Admin\Form\DataSubscriber\RemoveEmptyFieldsSubscriber: '@extranet.form.data_subscriber.remove_empty_reference_fields'
Extranet\Admin\Form\DataSubscriber\RemoveEmptyFieldsSubscriberInterface: '@Extranet\Admin\Form\DataSubscriber\RemoveEmptyFieldsSubscriber'
但是现在,如果我将此服务直接放在文件末尾的
services.yaml
中,它就可以工作了

我的问题是,如何在
services.yaml

如果你能帮我,请告诉我,谢谢

编辑


我已经试着把导入部分放在服务的末尾。yaml文件几天前我遇到了一个类似的问题,找到了一个更好的解决方案:装饰服务,然后它会自动恢复。你能给我举个例子吗?或者是通过symfony文档的链接?例如OK谢谢,我在我的服务配置中添加了装饰选项,看起来很有效。我必须承认,让类和装饰选项指向同一个类有点奇怪。我认为核心问题是,您的原始config/services.yaml文件中仍然有资源:“../src/*”部分。这会导致autowire连接它遇到的任何类,即使其中一个导入的服务文件也会处理它。当使用多个服务文件时,您通常需要完全删除此部分,或者使用exclude进行处理。下面是一个例子:几天前,我遇到了一个类似的问题,并找到了更好的解决方案:改为装饰服务,然后自动恢复。你能给我举个例子吗?或者是通过symfony文档的链接?例如OK谢谢,我在我的服务配置中添加了装饰选项,看起来很有效。我必须承认,让类和装饰选项指向同一个类有点奇怪。我认为核心问题是,您的原始config/services.yaml文件中仍然有资源:“../src/*”部分。这会导致autowire连接它遇到的任何类,即使其中一个导入的服务文件也会处理它。当使用多个服务文件时,您通常需要完全删除此部分,或者使用exclude进行处理。以下是一个例子: