Skip to content

Commit 10b50a8

Browse files
committed
Add generic type constraints in PHPDoc for improved type safety
1 parent 9b4a7e2 commit 10b50a8

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

src/Concerns/HasDrafts.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
use Oddvalue\LaravelDrafts\Facades\LaravelDrafts;
1717

1818
/**
19-
* @method static Builder | Model current()
20-
* @method static Builder | Model withoutCurrent()
21-
* @method static Builder | Model excludeRevision(int | Model $exclude)
19+
* @template TModel of Model
2220
*
23-
* @mixin Model
21+
* @method static Builder<TModel> | TModel current()
22+
* @method static Builder<TModel> | TModel withoutCurrent()
23+
* @method static Builder<TModel> | TModel excludeRevision(int | TModel $exclude)
24+
*
25+
* @mixin TModel
2426
*/
2527
trait HasDrafts
2628
{
@@ -472,7 +474,7 @@ public function drafts(): HasMany
472474
}
473475

474476
/**
475-
* @return MorphTo<Model, $this>
477+
* @return MorphTo<Model, TModel>
476478
*/
477479
public function publisher(): MorphTo
478480
{
@@ -489,7 +491,7 @@ public function publisher(): MorphTo
489491
*/
490492

491493
/**
492-
* @param Builder<Model> $query
494+
* @param Builder<TModel> $query
493495
*/
494496
protected function scopeCurrent(Builder $query): void
495497
{
@@ -498,15 +500,15 @@ protected function scopeCurrent(Builder $query): void
498500
}
499501

500502
/**
501-
* @param Builder<Model> $query
503+
* @param Builder<TModel> $query
502504
*/
503505
protected function scopeWithoutCurrent(Builder $query): void
504506
{
505507
$query->where($this->getIsCurrentColumn(), false);
506508
}
507509

508510
/**
509-
* @param Builder<Model> $query
511+
* @param Builder<TModel> $query
510512
*/
511513
protected function scopeExcludeRevision(Builder $query, int | Model $exclude): void
512514
{
@@ -515,7 +517,7 @@ protected function scopeExcludeRevision(Builder $query, int | Model $exclude): v
515517

516518
/**
517519
* @deprecated This doesn't actually work, will be removed in next version
518-
* @param Builder<Model> $query
520+
* @param Builder<TModel> $query
519521
*/
520522
protected function scopeWithoutSelf(Builder $query): void
521523
{

src/Scopes/PublishingScope.php

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
use Illuminate\Database\Eloquent\Scope;
88
use Oddvalue\LaravelDrafts\Facades\LaravelDrafts;
99

10+
/**
11+
* @template TModel of Model
12+
*/
1013
class PublishingScope implements Scope
1114
{
1215
/**
@@ -17,7 +20,8 @@ class PublishingScope implements Scope
1720
protected $extensions = [/*'Publish', 'Unpublish', 'Schedule', */'Published', 'WithDrafts', 'WithoutDrafts', 'OnlyDrafts'];
1821

1922
/**
20-
* @param Builder<Model> $builder
23+
* @param Builder<TModel> $builder
24+
* @param TModel $model
2125
*/
2226
public function apply(Builder $builder, Model $model): void
2327
{
@@ -30,7 +34,7 @@ public function apply(Builder $builder, Model $model): void
3034
}
3135

3236
/**
33-
* @param Builder<Model> $builder
37+
* @param Builder<TModel> $builder
3438
*/
3539
public function extend(Builder $builder): void
3640
{
@@ -65,19 +69,19 @@ public function extend(Builder $builder): void
6569
// }
6670

6771
/**
68-
* @param Builder<Model> $builder
72+
* @param Builder<TModel> $builder
6973
*/
7074
protected function addPublished(Builder $builder): void
7175
{
7276
$builder->macro(
7377
'published',
74-
/** @param Builder<Model> $builder */
78+
/** @param Builder<TModel> $builder */
7579
fn (Builder $builder, $withoutDrafts = true) => $builder->withDrafts(! $withoutDrafts),
7680
);
7781
}
7882

7983
/**
80-
* @param Builder<Model> $builder
84+
* @param Builder<TModel> $builder
8185
*/
8286
protected function addWithDrafts(Builder $builder): void
8387
{
@@ -91,7 +95,7 @@ protected function addWithDrafts(Builder $builder): void
9195
}
9296

9397
/**
94-
* @param Builder<Model> $builder
98+
* @param Builder<TModel> $builder
9599
*/
96100
protected function addWithoutDrafts(Builder $builder): void
97101
{
@@ -107,7 +111,7 @@ protected function addWithoutDrafts(Builder $builder): void
107111
}
108112

109113
/**
110-
* @param Builder<Model> $builder
114+
* @param Builder<TModel> $builder
111115
*/
112116
protected function addOnlyDrafts(Builder $builder): void
113117
{

0 commit comments

Comments
 (0)