Ako zapisat v extension sluzbu ktora bude vracat innu sluzbu?
- duskohu
- Člen | 778
Ahojte ako by sa dalo toto zapisat v extension?
services:
oauth2.google.factory:
create: Nas\UserModule\DI\GoogleProviderFactory(%google.clientId%, %google.clientSecret%)
autowired: false
oauth2.google:
type: League\OAuth2\Client\Provider\Google
create: @oauth2.google.factory::create()
- duskohu
- Člen | 778
Dik @Felix pomohlo:
// GoogleProviderFactory
$builder->addDefinition($this->prefix('googleProviderFactory'))
->setFactory(
GoogleProviderFactory::class,
[$this->config['google']['clientId'], $this->config['google']['clientSecret']]
)
->setAutowired(false);
$builder->addDefinition('googleOauth2')
->setFactory('@' . $this->prefix('googleProviderFactory') . '::create');
- duskohu
- Člen | 778
Da sa toto upravit aby mi stale prisla nova instancia
GoogleClient
?
// GoogleClientFactory
$builder->addDefinition($this->prefix('googleClientFactory'))
->setFactory(
GoogleClientFactory::class,
[$this->config['google']['clientId'], $this->config['google']['clientSecret']]
)
->setAutowired(false);
$builder->addDefinition('googleClient')
->setFactory('@' . $this->prefix('googleClientFactory') . '::create');
class GoogleClientFactory
{
/** @var string */
private $clientId;
/** @var string */
private $clientSecret;
/**
* @param string $clientId
* @param string $clientSecret
*/
public function __construct(
string $clientId,
string $clientSecret
) {
$this->clientId = $clientId;
$this->clientSecret = $clientSecret;
}
public function create(): GoogleClient
{
return new GoogleClient([
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret
]);
}
}
- David Matějka
- Moderator | 6445
Kam aby vždy přišla nová instance? jako do každé služby, která GoogleClient vyžaduje? ne, to nejde – respektive můžeš vždy registrovat novou službu (nebo to ani neregistrovat jako službu, ale vytvořit ji inline) nebo si předávat tu factory
- duskohu
- Člen | 778
David Matějka napsal(a):
Kam aby vždy přišla nová instance? jako do každé služby, která GoogleClient vyžaduje? ne, to nejde – respektive můžeš vždy registrovat novou službu (nebo to ani neregistrovat jako službu, ale vytvořit ji inline) nebo si předávat tu factory
@DavidMatějka Dakujem, „předávat tu factory“ je riesenie, dakujem