vendor/willdurand/geocoder-bundle/src/ProviderFactory/PluginProviderFactory.php line 31

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the BazingaGeocoderBundle package.
  5.  * For the full copyright and license information, please view the LICENSE
  6.  * file that was distributed with this source code.
  7.  *
  8.  * @license    MIT License
  9.  */
  10. namespace Bazinga\GeocoderBundle\ProviderFactory;
  11. use Geocoder\Plugin\Plugin;
  12. use Geocoder\Plugin\PluginProvider;
  13. /**
  14.  * This factory creates a PluginProvider.
  15.  *
  16.  * @author Tobias Nyholm <tobias.nyholm@gmail.com>
  17.  */
  18. final class PluginProviderFactory
  19. {
  20.     /**
  21.      * @param Plugin[]                          $plugins
  22.      * @param ProviderFactoryInterface|callable $factory
  23.      * @param array<mixed, mixed>               $config                config to the client factory
  24.      * @param array<mixed, mixed>               $pluginProviderOptions config forwarded to the PluginProvider
  25.      */
  26.     public static function createPluginProvider(array $plugins$factory, array $config, array $pluginProviderOptions = []): PluginProvider
  27.     {
  28.         if ($factory instanceof ProviderFactoryInterface) {
  29.             $client $factory->createProvider($config);
  30.         } elseif (is_callable($factory)) {
  31.             $client $factory($config);
  32.         } else {
  33.             throw new \RuntimeException(sprintf('Second argument to PluginProviderFactory::createPluginProvider must be a "%s" or a callable.'ProviderFactoryInterface::class));
  34.         }
  35.         return new PluginProvider($client$plugins$pluginProviderOptions);
  36.     }
  37. }