Вход Регистрация
Файл: vendor/vlucas/phpdotenv/src/Loader/Resolver.php
Строк: 61
<?php

declare(strict_types=1);

namespace 
DotenvLoader;

use 
DotenvParserValue;
use 
DotenvRepositoryRepositoryInterface;
use 
DotenvUtilRegex;
use 
DotenvUtilStr;
use 
PhpOptionOption;

final class 
Resolver
{
    
/**
     * This class is a singleton.
     *
     * @codeCoverageIgnore
     *
     * @return void
     */
    
private function __construct()
    {
        
//
    
}

    
/**
     * Resolve the nested variables in the given value.
     *
     * Replaces ${varname} patterns in the allowed positions in the variable
     * value by an existing environment variable.
     *
     * @param DotenvRepositoryRepositoryInterface $repository
     * @param DotenvParserValue                   $value
     *
     * @return string
     */
    
public static function resolve(RepositoryInterface $repositoryValue $value)
    {
        return 
array_reduce($value->getVars(), static function (string $sint $i) use ($repository) {
            return 
Str::substr($s0$i).self::resolveVariable($repositoryStr::substr($s$i));
        }, 
$value->getChars());
    }

    
/**
     * Resolve a single nested variable.
     *
     * @param DotenvRepositoryRepositoryInterface $repository
     * @param string                                 $str
     *
     * @return string
     */
    
private static function resolveVariable(RepositoryInterface $repositorystring $str)
    {
        return 
Regex::replaceCallback(
            
'/A${([a-zA-Z0-9_.]+)}/',
            static function (array 
$matches) use ($repository) {
                return 
Option::fromValue($repository->get($matches[1]))
                    ->
getOrElse($matches[0]);
            },
            
$str,
            
1
        
)->success()->getOrElse($str);
    }
}
Онлайн: 2
Реклама