Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Database/Eloquent/ModelInfo.php
Строк: 180
<?php

namespace IlluminateDatabaseEloquent;

use 
ArrayAccess;
use 
IlluminateContractsSupportArrayable;
use 
InvalidArgumentException;
use 
LogicException;

/**
 * @implements Arrayable<string, mixed>
 *
 * @internal
 */
class ModelInfo implements ArrayableArrayAccess
{
    
/**
     * @template TModel of IlluminateDatabaseEloquentModel
     *
     * @param  class-string<TModel>  $class  The model's fully-qualified class.
     * @param  string  $database  The database connection name.
     * @param  string  $table  The database table name.
     * @param  class-string|null  $policy  The policy that applies to the model.
     * @param  IlluminateSupportCollection<int, array<string, mixed>>  $attributes  The attributes available on the model.
     * @param  IlluminateSupportCollection<int, array{name: string, type: string, related: class-string<IlluminateDatabaseEloquentModel>}>  $relations  The relations defined on the model.
     * @param  IlluminateSupportCollection<int, array{event: string, class: string}>  $events  The events that the model dispatches.
     * @param  IlluminateSupportCollection<int, array{event: string, observer: array<int, string>}>  $observers  The observers registered for the model.
     * @param  class-string<IlluminateDatabaseEloquentCollection<TModel>>  $collection  The Collection class that collects the models.
     * @param  class-string<IlluminateDatabaseEloquentBuilder<TModel>>  $builder  The Builder class registered for the model.
     * @param  IlluminateHttpResourcesJsonJsonResource|null  $resource  The JSON resource that represents the model.
     */
    
public function __construct(
        public 
$class,
        public 
$database,
        public 
$table,
        public 
$policy,
        public 
$attributes,
        public 
$relations,
        public 
$events,
        public 
$observers,
        public 
$collection,
        public 
$builder,
        public 
$resource
    
) {
    }

    
/**
     * Convert the model info to an array.
     *
     * @return array{
     *     "class": class-string<IlluminateDatabaseEloquentModel>,
     *     database: string,
     *     table: string,
     *     policy: class-string|null,
     *     attributes: IlluminateSupportCollection<int, array<string, mixed>>,
     *     relations: IlluminateSupportCollection<int, array{name: string, type: string, related: class-string<IlluminateDatabaseEloquentModel>}>,
     *     events: IlluminateSupportCollection<int, array{event: string, class: string}>,
     *     observers: IlluminateSupportCollection<int, array{event: string, observer: array<int, string>}>, collection: class-string<IlluminateDatabaseEloquentCollection<IlluminateDatabaseEloquentModel>>,
     *     builder: class-string<IlluminateDatabaseEloquentBuilder<IlluminateDatabaseEloquentModel>>,
     *     resource: IlluminateHttpResourcesJsonJsonResource|null
     * }
     */
    
public function toArray()
    {
        return [
            
'class' => $this->class,
            
'database' => $this->database,
            
'table' => $this->table,
            
'policy' => $this->policy,
            
'attributes' => $this->attributes,
            
'relations' => $this->relations,
            
'events' => $this->events,
            
'observers' => $this->observers,
            
'collection' => $this->collection,
            
'builder' => $this->builder,
            
'resource' => $this->resource,
        ];
    }

    
/**
     * Determine if the given offset exists.
     */
    
public function offsetExists(mixed $offset): bool
    
{
        return 
property_exists($this$offset);
    }

    
/**
     * Get the value for a given offset.
     *
     * @throws InvalidArgumentException
     */
    
public function offsetGet(mixed $offset): mixed
    
{
        return 
property_exists($this$offset) ? $this->{$offset} : throw new InvalidArgumentException("Property {$offset} does not exist.");
    }

    
/**
     * Set the value at the given offset.
     *
     * @throws LogicException
     */
    
public function offsetSet(mixed $offsetmixed $value): void
    
{
        throw new 
LogicException(self::class.' may not be mutated using array access.');
    }

    
/**
     * Unset the value at the given offset.
     *
     * @throws LogicException
     */
    
public function offsetUnset(mixed $offset): void
    
{
        throw new 
LogicException(self::class.' may not be mutated using array access.');
    }
}
Онлайн: 3
Реклама