служба аутентификации zend framework 2
В моем модуле есть два контроллера, и оба они должны видеть, вошел ли пользователь в систему или нет. Контроллеры входа аутентифицируют пользователя с помощью DbTable и записывают идентификатор в хранилище.
Я использую >Zend\Аутентификация\Служба аутентификации; $auth =новая служба аутентификации();
Внутри функции контроллера, но затем я создаю ее экземпляр на нескольких страницах()
Для этого я написал функцию в Module.php
Как следует
public function getServiceConfig()
{
return array(
'factories' => array(
'Application\Config\DbAdapter' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
return $dbAdapter;
},
'Admin\Model\PagesTable' => function($sm){
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$pagesTable = new PagesTable(new TableGateway('pages',$dbAdapter) );
return $pagesTable;
},
'Admin\Authentication\Service' => function($sm){
return new AuthenticationService();
}
),
);
}
Как вы можете видеть, я возвращаю новый AuthenticationService() каждый раз, когда я думаю, что это плохо. Я не смог найти, как захватить уже созданный экземпляр службы, или мне нужно написать для этого одноэлементный класс. Пожалуйста, сообщите, что любые примеры снипов кода с более глубоким объяснением будут высоко оценены и оценены, спасибо.
1 answers
Попробуйте вместо этого:
public function getServiceConfig()
{
return array(
'aliases' => array(
'Application\Config\DbAdapter' => 'Zend\Db\Adapter\Adapter',
'Admin\Authentication\Service' => 'Zend\Authentication\AuthenticationService',
),
'factories' => array(
'Admin\Model\PagesTable' => function ($serviceManager) {
$dbAdapter = $serviceManager->get('Application\Config\DbAdapter');
$tableGateway = new TableGateway('pages', $dbAdapter);
$pagesTable = new PagesTable($tableGateway);
return $pagesTable;
},
),
);
}
Обратите внимание, в основном, на раздел "псевдонимы" корневого массива, любые другие изменения носят косметический характер, и вы можете предпочесть использовать предложенный вами оригинальный способ (например, использовать фабрику для извлечения экземпляра Zend\Db\Adapter\Adapter вместо того, чтобы также использовать псевдонимы).
С уважением,
Ise