TL; DR services.yml WsseFactory
$container
->setDefinition($providerId, new ChildDefinition(WsseProvider::class))
->setArgument('$userProvider', new Reference($userProvider))
;
.
, . AuthenticationManagerInterface. . - , @yceruto @gintko.
, . , , , - , .
, replaceArgument, Symfony , . PassConfig:
$this->optimizationPasses = array(array(
new ExtensionCompilerPass(),
new ResolveDefinitionTemplatesPass(),
...
$autowirePass = new AutowirePass(false),
...
));
. security.authentication.provider.wsse.wsse_secured, WsseFactory. ResolveDefinitionTemplatesPass Cannot replace arguments, :
foreach ($definition->getArguments() as $k => $v) {
if (is_numeric($k)) {
$def->addArgument($v);
} elseif (0 === strpos($k, 'index_')) {
$def->replaceArgument((int) substr($k, strlen('index_')), $v);
} else {
$def->setArgument($k, $v);
}
}
, Definition::replaceArgument index_0. 0 services.xml, . AutowirePass , , $cachePool.
, , :
->setArgument(0, new Reference($userProvider));
->replaceArgument('$userProvider', new Reference($userProvider));
->setArgument('$userProvider', new Reference($userProvider));
Definition::addArgument Definition::setArgument . :
- setArgument(0, ... ;
- ->setArgument('$userProvider' , ->replaceArgument('$userProvider' - . !
, .
PS. .
:
AppBundle\Security\Authentication\Provider\WsseProvider:
arguments:
0: ''
$cachePool: '@cache.app'
public: false
Symfony\Component\Security\Core\User\UserProviderInterface, .
$container
->setDefinition($providerId, new ChildDefinition(WsseProvider::class))
;
$container
->setAlias('Symfony\Component\Security\Core\User\UserProviderInterface',$userProvider)
;