Задать вопрос

Почему не работает автомонтирование сервисов в конструкторе SF7?

После 5.4 установил Симфони 7. Необходимо через конструктор передать сервис контейнер в сервис. Получаю ошибку. А в 5.4 код работал. В services.yaml в 5.4 ничего не прописывал - автоподстановка работала.

Фаил src\DataFixtures\LoadFixtures.php
namespace App\DataFixtures;

use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\DependencyInjection\ContainerInterface;

class LoadFixtures extends Fixture
{
    private $container;
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
}


Полный листинг services.yaml
services:
    _defaults:
        autowire: true 
        autoconfigure: true

    App\:
        resource: '../src/'
        exclude:
            - '../src/DependencyInjection/'
            - '../src/Entity/'
            - '../src/Kernel.php'

    App\DataFixtures\LoadFixtures:
        arguments:
            $container: '@service_container'


67b4c15d06453339619898.png

Все работает, только, если явно прописать сервис, а в 5.4 это не требовалось.
App\DataFixtures\LoadFixtures:
        arguments:
            $container: '@service_container'


Что не так делаю с SF7 ?
  • Вопрос задан
  • 18 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@tukreb
То что вы хотите сделать является антипаттерном и начиная с 5.1 был помечен как Deprecated
https://symfony.com/blog/new-in-symfony-5-1-deprec...
https://aksymfony.readthedocs.io/en/5.4/service_co...
Оно у вас работало в 5 версии, потому что все "Deprecated" удаляются с выходом мажорной версии.

Если вы всё равно хотите идти этим путём, то вам придётся это явно указывать в конфиге, либо использовать атрибуты https://symfony.com/doc/current/service_container/...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы