이 설명입니다
ZF3에서, 당신은 당신의 응용 프로그램에 필요한 모든 클래스,이를 수리 할 수 있도록에서이를 사용할 수를 만드는 경우 ServiceManager를 통한 애플리케이션. ServiceManager는 등록 된 서비스를 저장하는 컨테이너를 구현합니다. 그러면 어때? ZF는 factory라는 메소드를 사용합니다 (간단히 말해서 객체를 생성합니다). 컨테이너에 서비스를 저장하는 데 도움이됩니다. 그런 다음 ServiceManager를 사용하여 해당 컨테이너에서 서비스를 가져올 수 있습니다. 어떻게 보죠?
ServiceManager 자체는 서비스입니다.
따라서 팩토리를 사용하면 컨트롤러 (예 : IndexController)에서 ServiceManager 인스턴스를 사용할 수 있습니다. 그래서 우리는 그것을 사용하는 모든 서비스를받을 수 있습니다.
응용 프로그램 \ 컨트롤러 \ IndexControllerFactory는
<?php
namespace Application\Controller;
// This is the container
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
class IndexControllerFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = NULL)
{
$serviceManager = $container->get('ServiceManager');
return new IndexController($serviceManager);
}
}
우리가 사용할 수 있도록 현실을 구성 할 수 있습니다. ServiceManager에 인스턴스 인 IndexController의 생성자를 통해 사용할 수있게됩니다 (위의 구성에 의해) moudle.config.php IndexControllerFactory에 의해 인스턴스화 인 IndexController 일단
'controllers' => [
'factories' => [
Controller\IndexController::class => Controller\IndexControllerFactory::class,
],
],
에서 다음과 같이 변경합니다.