diff --git a/app/Form/Data/ExportData.php b/app/Form/Data/ExportData.php index 0d2e1567..d0bed739 100644 --- a/app/Form/Data/ExportData.php +++ b/app/Form/Data/ExportData.php @@ -3,11 +3,11 @@ namespace App\Form\Data; use App\Fileshare\Data\FileshareResourceData; -use App\Form\Fields\Field; use Spatie\LaravelData\Attributes\MapInputName; use Spatie\LaravelData\Attributes\MapOutputName; use Spatie\LaravelData\Data; use Spatie\LaravelData\Mappers\SnakeCaseMapper; +use Spatie\LaravelData\Support\EloquentCasts\DataEloquentCast; #[MapInputName(SnakeCaseMapper::class)] #[MapOutputName(SnakeCaseMapper::class)] @@ -16,4 +16,10 @@ class ExportData extends Data public function __construct(public ?FileshareResourceData $root = null, public ?string $groupBy = null, public ?string $toGroupField = null) { } + + /** @return DataEloquentCast<self> */ + public static function castUsing(array $arguments): DataEloquentCast + { + return new DataEloquentCast(static::class, $arguments); + } } diff --git a/app/Form/Data/FormConfigData.php b/app/Form/Data/FormConfigData.php index 6e97ac0a..66de3149 100644 --- a/app/Form/Data/FormConfigData.php +++ b/app/Form/Data/FormConfigData.php @@ -8,6 +8,7 @@ use Illuminate\Support\Collection; use Spatie\LaravelData\Data; use Spatie\LaravelData\Attributes\WithCast; use Spatie\LaravelData\Attributes\WithTransformer; +use Spatie\LaravelData\Support\EloquentCasts\DataEloquentCast; class FormConfigData extends Data { @@ -29,4 +30,10 @@ class FormConfigData extends Data new FieldCollection([]) ); } + + /** @return DataEloquentCast<self> */ + public static function castUsing(array $arguments): DataEloquentCast + { + return new DataEloquentCast(static::class, $arguments); + } } diff --git a/app/Lib/Editor/Condition.php b/app/Lib/Editor/Condition.php index 09fc8f5a..ce28670e 100644 --- a/app/Lib/Editor/Condition.php +++ b/app/Lib/Editor/Condition.php @@ -6,6 +6,7 @@ use Spatie\LaravelData\Data; use Spatie\LaravelData\DataCollection; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Spatie\LaravelData\Attributes\DataCollectionOf; +use Spatie\LaravelData\Support\EloquentCasts\DataEloquentCast; class Condition extends Data { @@ -42,4 +43,10 @@ class Condition extends Data { return $this->mode === ConditionMode::ALL; } + + /** @return DataEloquentCast<self> */ + public static function castUsing(array $arguments): DataEloquentCast + { + return new DataEloquentCast(static::class, $arguments); + } } diff --git a/app/Lib/Editor/EditorData.php b/app/Lib/Editor/EditorData.php index debffc23..497b5bbf 100644 --- a/app/Lib/Editor/EditorData.php +++ b/app/Lib/Editor/EditorData.php @@ -3,6 +3,7 @@ namespace App\Lib\Editor; use Spatie\LaravelData\Data; +use Spatie\LaravelData\Support\EloquentCasts\DataEloquentCast; /** @todo replace blocks with actual block data classes */ class EditorData extends Data implements Editorable @@ -83,4 +84,10 @@ class EditorData extends Data implements Editorable { return $this; } + + /** @return DataEloquentCast<self> */ + public static function castUsing(array $arguments): DataEloquentCast + { + return new DataEloquentCast(static::class, $arguments); + } } diff --git a/composer.lock b/composer.lock index 7f3d4b69..87bbf04d 100644 --- a/composer.lock +++ b/composer.lock @@ -6011,16 +6011,16 @@ }, { "name": "nette/utils", - "version": "v4.0.5", + "version": "v4.0.6", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + "reference": "ce708655043c7050eb050df361c5e313cf708309" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309", + "reference": "ce708655043c7050eb050df361c5e313cf708309", "shasum": "" }, "require": { @@ -6091,9 +6091,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" + "source": "https://github.com/nette/utils/tree/v4.0.6" }, - "time": "2024-08-07T15:39:19+00:00" + "time": "2025-03-30T21:06:30+00:00" }, { "name": "nikic/php-parser", diff --git a/phpstan.neon b/phpstan.neon index 72b343e6..a757e1b8 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -7,6 +7,7 @@ parameters: stubFiles: - tests/stub/phpstan/TestResponse.stub - tests/stub/phpstan/Settings.stub + - tests/stub/phpstan/DataEloquentCast.stub paths: - app diff --git a/tests/stub/phpstan/DataEloquentCast.stub b/tests/stub/phpstan/DataEloquentCast.stub new file mode 100644 index 00000000..41d50325 --- /dev/null +++ b/tests/stub/phpstan/DataEloquentCast.stub @@ -0,0 +1,13 @@ +<?php + +namespace Spatie\LaravelData\Support\EloquentCasts; + +use Illuminate\Contracts\Database\Eloquent\CastsAttributes; + +/** + * @template TDto + * @implements CastsAttributes<TDto, TDto> + */ +class DataEloquentCast implements CastsAttributes +{ +}