$switcherInstance) { if (!$switcherInstance instanceof StoreSwitcherInterface) { throw new \InvalidArgumentException( "Store switcher '{$switcherName}' is expected to implement interface " . StoreSwitcherInterface::class ); } } $this->storeSwitchers = $storeSwitchers; } /** * @param StoreInterface $fromStore store where we came from * @param StoreInterface $targetStore store where to go to * @param string $redirectUrl original url requested for redirect after switching * @return string url to be redirected after switching * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @throws CannotSwitchStoreException */ public function switch(StoreInterface $fromStore, StoreInterface $targetStore, string $redirectUrl): string { $targetUrl = $redirectUrl; foreach ($this->storeSwitchers as $storeSwitcher) { $targetUrl = $storeSwitcher->switch($fromStore, $targetStore, $targetUrl); } return $targetUrl; } }