Skip to content

Commit 46c9551

Browse files
committed
Fix phpstan issues
1 parent 1f630b1 commit 46c9551

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

src/Resolvers/DataFromSomethingResolver.php

+11-6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Http\Request;
66
use Spatie\LaravelData\Contracts\BaseData;
7+
use Spatie\LaravelData\Contracts\PropertyMorphableData;
78
use Spatie\LaravelData\Enums\CustomCreationMethodType;
89
use Spatie\LaravelData\Optional;
910
use Spatie\LaravelData\Support\Creation\CreationContext;
@@ -30,8 +31,8 @@ public function execute(
3031
CreationContext $creationContext,
3132
mixed ...$payloads
3233
): BaseData {
33-
if ($this->isPropertyMorphable($class)) {
34-
$class = $class::morph(...$payloads) ?? $class;
34+
if ($propertyMorphableClass = $this->propertyMorphableClass($class)) {
35+
$class = $propertyMorphableClass::morph(...$payloads) ?? $class;
3536
}
3637

3738
if ($data = $this->createFromCustomCreationMethod($class, $creationContext, $payloads)) {
@@ -64,12 +65,16 @@ public function execute(
6465
return $this->dataFromArrayResolver->execute($class, $properties);
6566
}
6667

67-
protected function isPropertyMorphable(string $class): bool
68+
/**
69+
* @return class-string<PropertyMorphableData>
70+
*/
71+
protected function propertyMorphableClass(string $class): ?string
6872
{
69-
$dataClass = $this->dataConfig
70-
->getDataClass($class);
73+
$dataClass = $this->dataConfig->getDataClass($class);
7174

72-
return $dataClass->isAbstract && $dataClass->propertyMorphable;
75+
return $dataClass->isAbstract && $dataClass->propertyMorphable
76+
? $class
77+
: null;
7378
}
7479

7580
protected function createFromCustomCreationMethod(

src/Resolvers/DataValidationRulesResolver.php

+13-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Validation\Rule;
88
use Spatie\LaravelData\Attributes\Validation\ArrayType;
99
use Spatie\LaravelData\Attributes\Validation\Present;
10+
use Spatie\LaravelData\Contracts\PropertyMorphableData;
1011
use Spatie\LaravelData\Support\DataClass;
1112
use Spatie\LaravelData\Support\DataConfig;
1213
use Spatie\LaravelData\Support\DataProperty;
@@ -34,9 +35,9 @@ public function execute(
3435
): array {
3536
$dataClass = $this->dataConfig->getDataClass($class);
3637

37-
if ($dataClass->isAbstract && $dataClass->propertyMorphable) {
38+
if ($propertyMorphableClass = $this->propertyMorphableClass($dataClass)) {
3839
$payload = $path->isRoot() ? $fullPayload : Arr::get($fullPayload, $path->get(), []);
39-
$class = $class::morph($payload) ?? $class;
40+
$class = $propertyMorphableClass::morph($payload) ?? $class;
4041
$dataClass = $this->dataConfig->getDataClass($class);
4142
}
4243

@@ -284,4 +285,14 @@ protected function inferRulesForDataProperty(
284285
$path
285286
);
286287
}
288+
289+
/**
290+
* @return class-string<PropertyMorphableData>
291+
*/
292+
protected function propertyMorphableClass(DataClass $dataClass): ?string
293+
{
294+
return $dataClass->isAbstract && $dataClass->propertyMorphable
295+
? $dataClass->name
296+
: null;
297+
}
287298
}

0 commit comments

Comments
 (0)