Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Container/Attributes/Bind.php
Строк: 108
<?php

namespace IlluminateContainerAttributes;

use 
Attribute;
use 
InvalidArgumentException;
use 
UnitEnum;

use function 
IlluminateSupportenum_value;

#[Attribute(Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)]
class Bind
{
    
/**
     * The concrete class to bind to.
     *
     * @var class-string
     */
    
public string $concrete;

    
/**
     * The environments the binding should apply for.
     *
     * @var non-empty-array<int, string>
     */
    
public array $environments = [];

    
/**
     * Create a new attribute instance.
     *
     * @param  class-string  $concrete
     * @param  non-empty-array<int, UnitEnum|non-empty-string>|non-empty-string|UnitEnum  $environments
     *
     * @throws InvalidArgumentException
     */
    
public function __construct(
        
string $concrete,
        
string|array|UnitEnum $environments = ['*'],
    ) {
        
$environments array_filter(is_array($environments) ? $environments : [$environments]);

        if (
$environments === []) {
            throw new 
InvalidArgumentException('The environment property must be set and cannot be empty.');
        }

        
$this->concrete $concrete;

        
$this->environments array_map(
            
fn ($environment) => enum_value($environment),
            
$environments,
        );
    }
}
Онлайн: 3
Реклама