Я новичок в ZF3 и мне нужна ваша помощь. В ZF3 больше нет службы Locator. Поэтому я создал класс Factory, чтобы заменить сервисный локатор в своем коде.
Вот мой код с сервисным локатором в моем файле AbstractController.php:
protected function getService()
{
return $this->getServiceLocator()->get($service); //remove from ZF3
return $this->service = $service;
}
Теперь я заменил сервис Locator в AbstractController.php:
protected function getService($service)
{
$service = $this->service;
return $this->service = $service;
}
И в Module.Config.php я добавил следующие строки:
return [
'controllers' => [
'factories' => [
Controller\AbstactController::class => Controller\AbstactControllerFactory::class,
],
],
И я создал файл AbstractControllerFactory со следующими строками:
<?php
namespace Application\Controller;
use Application\Controller\AbstractController;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
class AbstractControllerFactory implements FactoryInterface
{
protected function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
return new AbstractController($container->get(service::class));
}
}
Мне нужно знать, правильный ли это переход с ZF2 на ZF3?