Вход Регистрация
Файл: vendor/league/flysystem/src/UrlGeneration/ShardedPrefixPublicUrlGenerator.php
Строк: 46
<?php

namespace LeagueFlysystemUrlGeneration;

use 
InvalidArgumentException;
use 
LeagueFlysystemConfig;
use 
LeagueFlysystemPathPrefixer;

use function 
array_map;
use function 
count;
use function 
crc32;

final class 
ShardedPrefixPublicUrlGenerator implements PublicUrlGenerator
{
    
/** @var PathPrefixer[] */
    
private array $prefixes;
    private 
int $count;

    
/**
     * @param string[] $prefixes
     */
    
public function __construct(array $prefixes)
    {
        
$this->count count($prefixes);

        if (
$this->count === 0) {
            throw new 
InvalidArgumentException('At least one prefix is required.');
        }

        
$this->prefixes array_map(static fn (string $prefix) => new PathPrefixer($prefix'/'), $prefixes);
    }

    public function 
publicUrl(string $pathConfig $config): string
    
{
        
$index abs(crc32($path)) % $this->count;

        return 
$this->prefixes[$index]->prefixPath($path);
    }
}
Онлайн: 1
Реклама