Доброго времени суток!
При обновлении с ZF2 на ZF3 появляется ошибка ServiceLocatorAware deprecation, так как я в контроллере, в сервисах использую ServiceLocator. Вот один из примеров решения этой проблемы - сделать фабрику и в ней указать зависимости. Вроде все логично.
// Класс фабрики
class IndexControllerFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container,
$requestedName, array $options = null)
{
// Извлечь экземпляр сервиса CurrencyConverter из менеджера сервисов.
$currencyConverter = $container->get(CurrencyConverter::class);
// Создать экземпляр контроллера и передать сервис в его конструктор.
return new IndexController($currencyConverter);
}
Поясните пожалуйста, как мне быть в том случае если у контроллера около 10 зависимостей? Все пихать в конструктор? Это не очень понятно после использования ZF2.
Приведу пример, у меня есть контроллер управления заказами, в нем мапперы (не использую доктрину) Заказ, Табличная часть заказа, Скидки, Контрагенты, Договоры. А так же сервисы - работа с 1С и отправка на почту сообщений.
Если убрать ServiceLocator из контроллера, нужно создать приватные переменные под каждый маппер и сервисы, потом создать конструктор в который вставлять полученные из сервис менеджера объекты.
До каких размеров может разрастись конструктор? Не все мапперы и сервисы используются в каждом экшене, зачем мне лишнее?
Все гугление в интернете сводится к простому примеру из одной зависимости, а как использовать в больших проектах ни слова(