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)
;