Я полагаю, у вас есть проблемы с вашим сервисом, потому что вам нужно вставить менеджер сущностей внутрь.Пожалуйста, обратите внимание, что в этом нет ничего плохого.Вот код, который должен работать:
Допустим, мы внедрили сервис:
// Better use camel case with upper first letter
class SomeController extends Controller
{
/**
* @Route("/test")
*/
public function someFunction(SomeService $someService)
{
$all = $someService->getAll();
dump($all);exit;
}
}
Вы можете внедрить его непосредственно в конструкторе вашего контроллера, но здесь я использую инъекцию действия, см. документацию .
Вот как выглядит ваш сервис:
class SomeService implements SomeServiceInterface
{
/**
* @var EntityManagerInterface
*/
private $manager;
// Type hinting matters here!
public function __construct(EntityManagerInterface $manager)
{
$this->manager = $manager;
}
public function getAll()
{
return $this->manager->getRepository(SomeEntity::class)->findAll();
}
}
Это работает "из коробки" в настройках Symfony 4.x, потому что они определяют автозагрузку сервиса и автопровод по умолчанию.Какие функции доступны в Symfony 3.4, , см. Документацию .
Но для того, чтобы настроить все это вручную, вам может понадобиться эта конфигурация:
You\SomeController:
autowire: true
tags: ['controller.service_arguments']
You\SomeService:
autowire: true
Наконец,Если вы ищете способ создавать ленивые сервисы, это особенность компонента внедрения зависимостей в Symfony.Смотрите, опять же, документацию здесь .