Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
tipuloidea
/
back
/
vendor
/
spatie
/
laravel-data
/
src
/
Concerns
:
BaseData.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Spatie\LaravelData\Concerns; use Illuminate\Contracts\Pagination\CursorPaginator as CursorPaginatorContract; use Illuminate\Contracts\Pagination\Paginator as PaginatorContract; use Illuminate\Pagination\AbstractCursorPaginator; use Illuminate\Pagination\AbstractPaginator; use Illuminate\Support\Collection; use Illuminate\Support\Enumerable; use Illuminate\Support\LazyCollection; use Spatie\LaravelData\CursorPaginatedDataCollection; use Spatie\LaravelData\DataCollection; use Spatie\LaravelData\DataPipeline; use Spatie\LaravelData\DataPipes\AuthorizedDataPipe; use Spatie\LaravelData\DataPipes\CastPropertiesDataPipe; use Spatie\LaravelData\DataPipes\DefaultValuesDataPipe; use Spatie\LaravelData\DataPipes\InjectPropertyValuesPipe; use Spatie\LaravelData\DataPipes\MapPropertiesDataPipe; use Spatie\LaravelData\DataPipes\ValidatePropertiesDataPipe; use Spatie\LaravelData\PaginatedDataCollection; use Spatie\LaravelData\Support\Creation\CreationContext; use Spatie\LaravelData\Support\Creation\CreationContextFactory; use Spatie\LaravelData\Support\DataConfig; use Spatie\LaravelData\Support\DataProperty; trait BaseData { public static function optional(mixed ...$payloads): ?static { if (count($payloads) === 0) { return null; } foreach ($payloads as $payload) { if ($payload !== null) { return static::from(...$payloads); } } return null; } public static function from(mixed ...$payloads): static { return static::factory()->from(...$payloads); } public static function collect(mixed $items, ?string $into = null): array|DataCollection|PaginatedDataCollection|CursorPaginatedDataCollection|Enumerable|AbstractPaginator|PaginatorContract|AbstractCursorPaginator|CursorPaginatorContract|LazyCollection|Collection { return static::factory()->collect($items, $into); } public static function factory(?CreationContext $creationContext = null): CreationContextFactory { if ($creationContext) { return CreationContextFactory::createFromCreationContext(static::class, $creationContext); } return CreationContextFactory::createFromConfig(static::class); } public static function normalizers(): array { return config('data.normalizers'); } public static function pipeline(): DataPipeline { return DataPipeline::create() ->into(static::class) ->through(AuthorizedDataPipe::class) ->through(MapPropertiesDataPipe::class) ->through(InjectPropertyValuesPipe::class) ->through(ValidatePropertiesDataPipe::class) ->through(DefaultValuesDataPipe::class) ->through(CastPropertiesDataPipe::class); } public static function prepareForPipeline(array $properties): array { return $properties; } public function __sleep(): array { $dataClass = app(DataConfig::class)->getDataClass(static::class); return $dataClass ->properties ->map(fn (DataProperty $property) => $property->name) ->when($dataClass->appendable, fn (Collection $properties) => $properties->push('_additional')) ->when(property_exists($this, '_dataContext'), fn (Collection $properties) => $properties->push('_dataContext')) ->toArray(); } }