1111use Illuminate \Support \Collection ;
1212
1313/**
14- * @template TValue
15- *
16- * @implements Arrayable<string, TValue>
14+ * @implements Arrayable<string, null|scalar|array<array-key, mixed>>
1715 */
1816abstract class Translations implements Arrayable, Countable, Jsonable
1917{
@@ -23,12 +21,12 @@ abstract class Translations implements Arrayable, Countable, Jsonable
2321 public string $ driver ;
2422
2523 /**
26- * @var array<array-key, TValue >
24+ * @var array<array-key, null|scalar|array<array-key, mixed> >
2725 */
2826 public array $ items = [];
2927
3028 /**
31- * @param array<array-key, TValue> |Collection<array-key,TValue > $items
29+ * @param array<array-key, null|scalar|array<array-key, mixed>> |Collection<array-key,null|scalar|array<array-key, mixed> > $items
3230 */
3331 final public function __construct (array |Collection $ items = [])
3432 {
@@ -38,17 +36,28 @@ final public function __construct(array|Collection $items = [])
3836 abstract public function has (string $ key ): bool ;
3937
4038 /**
41- * @return TValue
39+ * @return null|scalar|array<array-key, mixed>
4240 */
4341 abstract public function get (string $ key ): mixed ;
4442
43+ public function getString (string $ key ): string
44+ {
45+ $ value = $ this ->get ($ key );
46+
47+ if (is_array ($ value )) {
48+ return '' ;
49+ }
50+
51+ return (string ) $ value ;
52+ }
53+
4554 /**
4655 * @return Collection<array-key, null|scalar>
4756 */
4857 abstract public function dot (): Collection ;
4958
5059 /**
51- * @param Collection<array-key, TValue> |array<array-key, TValue > $items
60+ * @param Collection<array-key, null|scalar|array<array-key, mixed>> |array<array-key, null|scalar|array<array-key, mixed> > $items
5261 */
5362 abstract public static function undot (Collection |array $ items ): static ;
5463
@@ -63,25 +72,24 @@ abstract public function only(array $keys): static;
6372 abstract public function except (array $ keys ): static ;
6473
6574 /**
66- * @param array<array-key, TValue > $values
75+ * @param array<array-key, null|scalar|array<array-key, mixed> > $values
6776 */
6877 abstract public function merge (array $ values ): static ;
6978
70- /**
71- * @param Translations<TValue> $translations
72- */
7379 abstract public function diff (Translations $ translations ): static ;
7480
7581 /**
76- * @param null|(callable(array-key, TValue ):mixed) $callback
82+ * @param null|(callable(null|scalar| array<array -key, mixed>, array-key ):mixed) $callback
7783 */
7884 abstract public function filter (?callable $ callback = null ): static ;
7985
8086 /**
81- * @param null|(callable(array-key, TValue ):mixed) $callback
87+ * @param null|(callable(null|scalar| array<array -key, mixed>, array-key ):mixed) $callback
8288 */
8389 abstract public function map (?callable $ callback = null ): static ;
8490
91+ abstract public function sortKeys (int $ options = SORT_REGULAR , bool $ descending = false ): static ;
92+
8593 public function notBlank (): static
8694 {
8795 return $ this ->filter (
@@ -90,7 +98,7 @@ public function notBlank(): static
9098 }
9199
92100 /**
93- * @return array<array-key, TValue >
101+ * @return array<array-key, null|scalar|array<array-key, mixed> >
94102 */
95103 public function all (): array
96104 {
@@ -106,10 +114,11 @@ public function keys(): array
106114 }
107115
108116 /**
109- * @return Collection<array-key, TValue >
117+ * @return Collection<array-key, null|scalar|array<array-key, mixed> >
110118 */
111119 public function collect (): Collection
112120 {
121+ // @phpstan-ignore-next-line
113122 return new Collection ($ this ->items );
114123 }
115124
@@ -120,6 +129,7 @@ public function collect(): Collection
120129 */
121130 public function toBase (): Collection
122131 {
132+ // @phpstan-ignore-next-line
123133 return $ this ->dot ();
124134 }
125135
@@ -129,7 +139,7 @@ public function count(): int
129139 }
130140
131141 /**
132- * @return array<array-key, TValue >
142+ * @return array<array-key, null|scalar|array<array-key, mixed> >
133143 */
134144 public function toArray (): array
135145 {
0 commit comments