Вход Регистрация
Файл: vendor/fakerphp/faker/src/Faker/Container/ContainerBuilder.php
Строк: 146
<?php

declare(strict_types=1);

namespace 
FakerContainer;

use 
FakerCore;
use 
FakerExtensionBarcodeExtension;
use 
FakerExtensionBloodExtension;
use 
FakerExtensionColorExtension;
use 
FakerExtensionDateTimeExtension;
use 
FakerExtensionFileExtension;
use 
FakerExtensionNumberExtension;
use 
FakerExtensionUuidExtension;
use 
FakerExtensionVersionExtension;

/**
 * @experimental This class is experimental and does not fall under our BC promise
 */
final class ContainerBuilder
{
    
/**
     * @var array<string, callable|object|string>
     */
    
private $definitions = [];

    
/**
     * @param callable|object|string $value
     *
     * @throws InvalidArgumentException
     */
    
public function add($valuestring $name null): self
    
{
        if (!
is_string($value) && !is_callable($value) && !is_object($value)) {
            throw new 
InvalidArgumentException(sprintf(
                
'First argument to "%s::add()" must be a string, callable or object.',
                
self::class,
            ));
        }

        if (
$name === null) {
            if (
is_string($value)) {
                
$name $value;
            } elseif (
is_object($value)) {
                
$name get_class($value);
            } else {
                throw new 
InvalidArgumentException(sprintf(
                    
'Second argument to "%s::add()" is required not passing a string or object as first argument',
                    
self::class,
                ));
            }
        }

        
$this->definitions[$name] = $value;

        return 
$this;
    }

    public function 
build(): ContainerInterface
    
{
        return new 
Container($this->definitions);
    }

    
/**
     * Get an array with extension that represent the default English
     * functionality.
     */
    
public static function defaultExtensions(): array
    {
        return [
            
BarcodeExtension::class => CoreBarcode::class,
            
BloodExtension::class => CoreBlood::class,
            
ColorExtension::class => CoreColor::class,
            
DateTimeExtension::class => CoreDateTime::class,
            
FileExtension::class => CoreFile::class,
            
NumberExtension::class => CoreNumber::class,
            
VersionExtension::class => CoreVersion::class,
            
UuidExtension::class => CoreUuid::class,
        ];
    }

    public static function 
getDefault(): ContainerInterface
    
{
        
$instance = new self();

        foreach (
self::defaultExtensions() as $id => $definition) {
            
$instance->add($definition$id);
        }

        return 
$instance->build();
    }
}
Онлайн: 1
Реклама