2
2
3
3
namespace Illuminate \Database \Eloquent \Casts ;
4
4
5
+ /**
6
+ * @template TGet
7
+ * @template TSet
8
+ */
5
9
class Attribute
6
10
{
7
11
/**
8
12
* The attribute accessor.
9
13
*
10
- * @var callable
14
+ * @var ( callable(mixed=, array<string, mixed>=): TGet)|null
11
15
*/
12
16
public $ get ;
13
17
14
18
/**
15
19
* The attribute mutator.
16
20
*
17
- * @var callable
21
+ * @var ( callable(TSet, array<string, mixed>=): mixed)|null
18
22
*/
19
23
public $ set ;
20
24
@@ -35,8 +39,8 @@ class Attribute
35
39
/**
36
40
* Create a new attribute accessor / mutator.
37
41
*
38
- * @param callable|null $get
39
- * @param callable|null $set
42
+ * @param ( callable(mixed=, array<string, mixed>=): TGet) |null $get
43
+ * @param ( callable(TSet, array<string, mixed>=): mixed) |null $set
40
44
* @return void
41
45
*/
42
46
public function __construct (?callable $ get = null , ?callable $ set = null )
@@ -48,9 +52,12 @@ public function __construct(?callable $get = null, ?callable $set = null)
48
52
/**
49
53
* Create a new attribute accessor / mutator.
50
54
*
51
- * @param callable|null $get
52
- * @param callable|null $set
53
- * @return static
55
+ * @template TMakeGet
56
+ * @template TMakeSet
57
+ *
58
+ * @param (callable(mixed=, array<string, mixed>=): TMakeGet)|null $get
59
+ * @param (callable(TMakeSet, array<string, mixed>=): mixed)|null $set
60
+ * @return static<TMakeGet, TMakeSet>
54
61
*/
55
62
public static function make (?callable $ get = null , ?callable $ set = null ): static
56
63
{
@@ -60,8 +67,10 @@ public static function make(?callable $get = null, ?callable $set = null): stati
60
67
/**
61
68
* Create a new attribute accessor.
62
69
*
63
- * @param callable $get
64
- * @return static
70
+ * @template T
71
+ *
72
+ * @param callable(mixed=, array<string, mixed>=): T $get
73
+ * @return static<T, never>
65
74
*/
66
75
public static function get (callable $ get )
67
76
{
@@ -71,8 +80,10 @@ public static function get(callable $get)
71
80
/**
72
81
* Create a new attribute mutator.
73
82
*
74
- * @param callable $set
75
- * @return static
83
+ * @template T
84
+ *
85
+ * @param callable(T, array<string, mixed>=): mixed $set
86
+ * @return static<never, T>
76
87
*/
77
88
public static function set (callable $ set )
78
89
{
@@ -82,7 +93,7 @@ public static function set(callable $set)
82
93
/**
83
94
* Disable object caching for the attribute.
84
95
*
85
- * @return static
96
+ * @return $this
86
97
*/
87
98
public function withoutObjectCaching ()
88
99
{
@@ -94,7 +105,7 @@ public function withoutObjectCaching()
94
105
/**
95
106
* Enable caching for the attribute.
96
107
*
97
- * @return static
108
+ * @return $this
98
109
*/
99
110
public function shouldCache ()
100
111
{
0 commit comments