Не удается отладить сервис, даже если он зарегистрирован в контейнере

1

Я использую следующее, чтобы узнать об услугах и их определении:

<?php
namespace Members\Bundle\ManagementBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class IndexController extends Controller
{
    public function learnAction()
    {
        $container= new ContainerBuilder();
        $container->register('test_service','User');
        var_dump($container->hasDefinition('test_service')); // return true
        return new Response("hi");
    }

}

Служба test_service зарегистрирована, а var_dump true. Но когда я возвращаюсь к консоли и пытаюсь отлаживать, используя:

php app/console container:debug test_service

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException] Определение сервиса "test_service" не существует.

container: debug [--show-private] [--tag = "..."] [--tag s] [--parameter = "..."] [--p arameters] [name]

Что я плохо понимаю? Ваша обычная помощь очень ценится.

Теги:

1 ответ

1
Лучший ответ

Вы должны определить свои службы в одном из файлов конфигурации, загружаемых Symfony при создании вашего контейнера.

В вашем примере вы вручную создаете экземпляр компоновщика контейнеров, но это не строитель, используемый Symfony при определении его контейнера.

Если вы определяете свою услугу, например, app/config/services.yml, она будет доступна для команды консоли.

  • 0
    Ааа теперь я понимаю. +1. Спасибо большое, сэр. Один вопрос, пожалуйста, возможно ли использовать тот же конструктор контейнеров, который использовался Symfony без конфигурационных файлов? (В случае, если мы хотим избежать компонента Config). заранее спасибо
  • 1
    Вы можете сделать это в расширениях контейнера или проходах компилятора. Ознакомьтесь с документацией по компоненту внедрения зависимостей .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню