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
:
TransformableData.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Spatie\LaravelData\Concerns; use Exception; use Spatie\LaravelData\Contracts\BaseData as BaseDataContract; use Spatie\LaravelData\Contracts\BaseDataCollectable as BaseDataCollectableContract; use Spatie\LaravelData\Contracts\ContextableData as ContextableDataContract; use Spatie\LaravelData\Contracts\IncludeableData as IncludeableDataContract; use Spatie\LaravelData\Support\DataContainer; use Spatie\LaravelData\Support\EloquentCasts\DataEloquentCast; use Spatie\LaravelData\Support\Transformation\TransformationContext; use Spatie\LaravelData\Support\Transformation\TransformationContextFactory; trait TransformableData { /** @return array<string, mixed> */ public function transform( null|TransformationContextFactory|TransformationContext $transformationContext = null, ): array { $transformationContext = match (true) { $transformationContext instanceof TransformationContext => $transformationContext, $transformationContext instanceof TransformationContextFactory => $transformationContext->get($this), $transformationContext === null => new TransformationContext( maxDepth: config('data.max_transformation_depth'), throwWhenMaxDepthReached: config('data.throw_when_max_transformation_depth_reached') ) }; $resolver = match (true) { $this instanceof BaseDataContract => DataContainer::get()->transformedDataResolver(), $this instanceof BaseDataCollectableContract => DataContainer::get()->transformedDataCollectableResolver(), default => throw new Exception('Cannot transform data object') }; if ($this instanceof IncludeableDataContract && $this instanceof ContextableDataContract) { $transformationContext->mergePartialsFromDataContext($this); } return $resolver->execute($this, $transformationContext); } /** @return array<array-key, mixed> */ public function all(): array { return $this->transform(TransformationContextFactory::create()->withValueTransformation(false)); } /** @return array<array-key, mixed> */ public function toArray(): array { return $this->transform(); } public function toJson($options = 0): string { return json_encode($this->transform(), $options); } /** @return array<array-key, mixed> */ public function jsonSerialize(): array { return $this->transform(); } public static function castUsing(array $arguments) { return new DataEloquentCast(static::class, $arguments); } }