diff --git a/Module.php b/Module.php index c9410a695cc435d934e0c82254005eac9096c6ec..39aa28701323617bf128326a2354367e89c0cec2 100644 --- a/Module.php +++ b/Module.php @@ -21,6 +21,8 @@ use Zend\ModuleManager\Feature\ServiceProviderInterface; use Zend\Mvc\Console\View\ExceptionStrategy as ConsoleExceptionStrategy; use Zend\Mvc\View\Http\ExceptionStrategy as HttpExceptionStrategy; use Zend\ServiceManager\ServiceManager; +use Zend\Session\Container; +use Zend\Session\SessionManager; use Zend\Validator\AbstractValidator; use Zend\View\Helper\Navigation; use Zend\View\HelperPluginManager; @@ -151,12 +153,14 @@ class Module implements return; } - $session = $e->getApplication()->getServiceManager()->get('Zend\Session\SessionManager'); - $session->start(); + /** @var SessionManager $sessionManager */ + $sessionManager = $e->getApplication()->getServiceManager()->get(SessionManager::class); + Container::setDefaultManager($sessionManager); + $sessionManager->start(); - $container = new \Zend\Session\Container('initialized'); + $container = new Container('initialized'); if (!isset($container->init)) { - $session->regenerateId(true); + $sessionManager->regenerateId(true); $container->init = 1; } } diff --git a/src/UnicaenApp/Session/SessionManagerFactory.php b/src/UnicaenApp/Session/SessionManagerFactory.php index 6470b269dc3a62ba6d180535805d0eb78f895cfb..7519b9ba191f0b0d1493493755396575f3842b0a 100644 --- a/src/UnicaenApp/Session/SessionManagerFactory.php +++ b/src/UnicaenApp/Session/SessionManagerFactory.php @@ -3,10 +3,8 @@ namespace UnicaenApp\Session; use Interop\Container\ContainerInterface; -use Zend\ServiceManager\FactoryInterface; -use Zend\ServiceManager\ServiceLocatorInterface; +use UnicaenApp\Options\ModuleOptions; use Zend\Session\Config\SessionConfig; -use Zend\Session\Container; use Zend\Session\SessionManager; use Zend\Session\Validator\HttpUserAgent; use Zend\Session\Validator\RemoteAddr; @@ -16,21 +14,18 @@ use Zend\Session\Validator\RemoteAddr; * * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr> */ -class SessionManagerFactory implements FactoryInterface +class SessionManagerFactory { - public function createService(ServiceLocatorInterface $serviceLocator) + public function __invoke(ContainerInterface $container) { - return $this->__invoke($serviceLocator, '?'); - } - - public function __invoke(ContainerInterface $container, $requestedName, array $options = null) - { - $appInfos = $container->get('unicaen-app_module_options')->getAppInfos(); + /** @var ModuleOptions $moduleOptions */ + $moduleOptions = $container->get('unicaen-app_module_options'); + $appInfos = $moduleOptions->getAppInfos(); $sessionConfig = new SessionConfig(); - $sessionConfig->setOptions(array( + $sessionConfig->setOptions([ 'name' => md5($appInfos['nom']), - )); + ]); $sessionManager = new SessionManager($sessionConfig); @@ -38,8 +33,6 @@ class SessionManagerFactory implements FactoryInterface $chain->attach('session.validate', array(new RemoteAddr(), 'isValid')); $chain->attach('session.validate', array(new HttpUserAgent(), 'isValid')); - Container::setDefaultManager($sessionManager); - return $sessionManager; } } \ No newline at end of file diff --git a/tests/UnicaenAppTest/Session/SessionManagerFactoryTest.php b/tests/UnicaenAppTest/Session/SessionManagerFactoryTest.php index f9d19028a435de88ba0181e040e07ab43af304d1..3ff9cf6337ee8b20db82cb341562970d00541f6d 100644 --- a/tests/UnicaenAppTest/Session/SessionManagerFactoryTest.php +++ b/tests/UnicaenAppTest/Session/SessionManagerFactoryTest.php @@ -2,9 +2,11 @@ namespace UnicaenAppTest\Session; +use UnicaenApp\Options\ModuleOptions; use UnicaenApp\Session\SessionManagerFactory; use UnicaenAppTest\BaseServiceFactoryTest; use Zend\Session\Container; +use Zend\Session\SessionManager; /** * Description of ModuleOptionsFactoryTest @@ -18,29 +20,31 @@ class ModuleOptionsFactoryTest extends BaseServiceFactoryTest */ protected $factory; - protected $factoryClass = 'UnicaenApp\Session\SessionManagerFactory'; - protected $serviceClass = 'Zend\Session\SessionManager'; - + protected $factoryClass = SessionManagerFactory::class; + protected $serviceClass = SessionManager::class; + public function testCanCreateService() { - $appInfos = array( + $appInfos = [ 'nom' => "Mon application", - ); - - $moduleOptions = $this->createMock('UnicaenApp\Options\ModuleOptions'/*, array('getAppInfos')*/); - $moduleOptions->expects($this->once()) - ->method('getAppInfos') - ->will($this->returnValue($appInfos)); - - $this->serviceManager->expects($this->once()) - ->method('get') - ->with('unicaen-app_module_options') - ->will($this->returnValue($moduleOptions)); - - $service = $this->factory->__invoke($this->serviceManager, ''); /* @var $service \Zend\Session\SessionManager */ + ]; + + $moduleOptions = $this->createMock(ModuleOptions::class); + $moduleOptions + ->expects($this->once()) + ->method('getAppInfos') + ->willReturn($appInfos); + + $this->serviceManager + ->expects($this->once()) + ->method('get') + ->with('unicaen-app_module_options') + ->willReturn($moduleOptions); + + $service = $this->factory->__invoke($this->serviceManager); + /* @var $service \Zend\Session\SessionManager */ $this->assertInstanceOf($this->serviceClass, $service); - $this->assertSame($service, Container::getDefaultManager()); $this->assertNotEmpty($service->getValidatorChain()->getListeners('session.validate')); $this->assertEquals($service->getConfig()->getName(), md5($appInfos['nom'])); }