Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Http/Resources/JsonApi/RelationResolver.php
Строк: 78
<?php

namespace IlluminateHttpResourcesJsonApi;

use 
Closure;
use 
IlluminateDatabaseEloquentCollection;
use 
IlluminateDatabaseEloquentModel;

/**
 * @internal
 */
class RelationResolver
{
    
/**
     * The relation resolver.
     *
     * @var Closure(mixed):(IlluminateDatabaseEloquentCollection|IlluminateDatabaseEloquentModel|null)
     */
    
public Closure $relationResolver;

    
/**
     * The relation resource class.
     *
     * @var class-string<IlluminateHttpResourcesJsonApiJsonApiResource>|null
     */
    
public ?string $relationResourceClass null;

    
/**
     * Construct a new resource relationship resolver.
     *
     * @param  Closure(mixed):(IlluminateDatabaseEloquentCollection|IlluminateDatabaseEloquentModel|null)|class-string<IlluminateHttpResourcesJsonApiJsonApiResource>|null  $resolver
     */
    
public function __construct(public string $relationNameClosure|string|null $resolver null)
    {
        
$this->relationResolver match (true) {
            
$resolver instanceof Closure => $resolver,
            default => 
fn ($resource) => $resource->getRelation($this->relationName),
        };

        if (
is_string($resolver) && class_exists($resolver)) {
            
$this->relationResourceClass $resolver;
        }
    }

    
/**
     * Resolve the relation for a resource.
     */
    
public function handle(mixed $resource): Collection|Model|null
    
{
        return 
value($this->relationResolver$resource);
    }

    
/**
     * Get the resource class.
     *
     * @return class-string<IlluminateHttpResourcesJsonApiJsonApiResource>|null
     */
    
public function resourceClass(): ?string
    
{
        return 
$this->relationResourceClass;
    }
}
Онлайн: 1
Реклама