Почему я не могу работать с сервисом в любом классе в Symfony4.Внедрение зависимости - PullRequest
1 голос
/ 22 июня 2019

У меня есть комплект Symfony4.Мне нужно работать с PostgresSQL с ORM Doctrine.Я хочу вызвать некоторый класс (Service) для работы с ORM, но у меня есть проблема.

Попытался создать сервис в services.yaml и создать класс.Я уже пробовал использовать ContainerBuilder, но у этой проблемы "Служба" Событие "есть зависимость от несуществующей службы" doctrine.orm.entity_manager ". Что я делаю неправильно. В классе, расширяющем Controller, я получаю EntityManger без проблем. Какчтобы получить EntityManager за пределами контроллера.

services.yaml

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    # controllers are imported separately to make sure services can be injected
    # as action arguments even if you don't extend any base controller class
    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']
    Event:
        class: App\Core\Event
        public: true
        arguments: ['@doctrine.orm.entity_manager']

App \ Core \ Event.php

<?php


namespace App\Core;

use Doctrine\ORM\EntityManagerInterface;

class Event
{
    public $entityManager;

    public function __construct(EntityManagerInterface $em) {
        $this->entityManager = $em;

    }
}

Любой класс, в котором я хочу получить службу

$container = new ContainerBuilder();
        $fileLocator = new FileLocator('/home/admin/web/noticer_service/public_html/config');

        $loader = new YamlFileLoader($container, $fileLocator);
        $loader->load('services.yaml');
        $container->compile();
        $container->get('Event')
...