Вход Регистрация
Файл: vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php
Строк: 91
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentTranslationProvider;

use 
SymfonyComponentTranslationExceptionUnsupportedSchemeException;

/**
 * @author Mathieu Santostefano <msantostefano@protonmail.com>
 */
class TranslationProviderCollectionFactory
{
    private 
iterable $factories;
    private array 
$enabledLocales;

    
/**
     * @param iterable<mixed, ProviderFactoryInterface> $factories
     */
    
public function __construct(iterable $factories, array $enabledLocales)
    {
        
$this->factories $factories;
        
$this->enabledLocales $enabledLocales;
    }

    public function 
fromConfig(array $config): TranslationProviderCollection
    
{
        
$providers = [];
        foreach (
$config as $name => $currentConfig) {
            
$providers[$name] = $this->fromDsnObject(
                new 
Dsn($currentConfig['dsn']),
                !
$currentConfig['locales'] ? $this->enabledLocales $currentConfig['locales'],
                !
$currentConfig['domains'] ? [] : $currentConfig['domains']
            );
        }

        return new 
TranslationProviderCollection($providers);
    }

    public function 
fromDsnObject(Dsn $dsn, array $locales, array $domains = []): ProviderInterface
    
{
        foreach (
$this->factories as $factory) {
            if (
$factory->supports($dsn)) {
                return new 
FilteringProvider($factory->create($dsn), $locales$domains);
            }
        }

        throw new 
UnsupportedSchemeException($dsn);
    }
}
Онлайн: 4
Реклама