Skip to content

Commit acd1e99

Browse files
authored
Merge pull request #3264 from yajra/fix/phpstan-errors
fix: resolve PHPStan array key type errors
2 parents 79c601a + 177b732 commit acd1e99

File tree

7 files changed

+39
-24
lines changed

7 files changed

+39
-24
lines changed

.github/workflows/static-analysis.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,20 @@ on:
77
- '*.x'
88

99
pull_request:
10+
paths:
11+
- .github/workflows/static-analysis.yml
12+
- composer.*
13+
- phpstan.neon.dist
14+
- src/**
15+
- tests/**
1016

1117
schedule:
1218
- cron: '0 0 * * *'
1319

1420
jobs:
1521
static-analysis-phpstan:
1622

17-
name: Source Code
23+
name: "Static Analysis with PHPStan"
1824
runs-on: ubuntu-latest
1925

2026
steps:
@@ -36,4 +42,4 @@ jobs:
3642
command: composer update --prefer-stable --prefer-dist --no-interaction --no-progress
3743

3844
- name: Run Static Analysis
39-
run: vendor/bin/phpunit
45+
run: "vendor/bin/phpstan --error-format=table"

src/CollectionDataTable.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
1010
use Illuminate\Support\Arr;
1111
use Illuminate\Support\Collection;
12+
use Illuminate\Support\Facades\Config;
1213
use Illuminate\Support\Str;
1314

1415
class CollectionDataTable extends DataTableAbstract
@@ -184,7 +185,8 @@ public function results(): Collection
184185
private function revertIndexColumn($mDataSupport): void
185186
{
186187
if ($this->columnDef['index']) {
187-
$indexColumn = config('datatables.index_column', 'DT_RowIndex');
188+
$indexColumn = Config::string('datatables.index_column', 'DT_RowIndex');
189+
/** @var int|string $index */
188190
$index = $mDataSupport ? $indexColumn : 0;
189191
$start = $this->request->start();
190192

src/DataTableAbstract.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,9 @@ public function with(mixed $key, mixed $value = ''): static
433433
if (is_array($key)) {
434434
$this->appends = $key;
435435
} else {
436-
$this->appends[$key] = value($value);
436+
/** @var int|string $arrayKey */
437+
$arrayKey = is_int($key) || is_string($key) ? $key : (string) $key;
438+
$this->appends[$arrayKey] = value($value);
437439
}
438440

439441
return $this;

src/DataTables.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
use Illuminate\Contracts\Database\Eloquent\Builder as EloquentBuilder;
66
use Illuminate\Contracts\Database\Query\Builder as QueryBuilder;
7+
use Illuminate\Support\Facades\Config;
78
use Illuminate\Support\Traits\Macroable;
89
use Yajra\DataTables\Exceptions\Exception;
9-
use Yajra\DataTables\Utilities\Config;
10+
use Yajra\DataTables\Utilities\Config as DataTablesConfig;
1011
use Yajra\DataTables\Utilities\Request;
1112

1213
class DataTables
@@ -42,13 +43,15 @@ public static function of($source)
4243
*/
4344
public static function make($source)
4445
{
45-
$engines = (array) config('datatables.engines');
46-
$builders = (array) config('datatables.builders');
46+
$engines = Config::array('datatables.engines', []);
47+
$builders = Config::array('datatables.builders', []);
4748

4849
$args = func_get_args();
4950
foreach ($builders as $class => $engine) {
50-
if ($source instanceof $class) {
51-
$callback = [$engines[$engine], 'create'];
51+
if (is_string($class) && $source instanceof $class) {
52+
/** @var int|string $engineKey */
53+
$engineKey = is_int($engine) || is_string($engine) ? $engine : (string) $engine;
54+
$callback = [$engines[$engineKey], 'create'];
5255

5356
if (is_callable($callback)) {
5457
/** @var \Yajra\DataTables\DataTableAbstract $instance */
@@ -87,7 +90,7 @@ public function getRequest(): Request
8790
/**
8891
* Get config instance.
8992
*/
90-
public function getConfig(): Config
93+
public function getConfig(): DataTablesConfig
9194
{
9295
return app('datatables.config');
9396
}
@@ -99,8 +102,7 @@ public function getConfig(): Config
99102
*/
100103
public function query(QueryBuilder $builder): QueryDataTable
101104
{
102-
/** @var string $dataTable */
103-
$dataTable = config('datatables.engines.query');
105+
$dataTable = Config::string('datatables.engines.query');
104106

105107
$this->validateDataTable($dataTable, QueryDataTable::class);
106108

@@ -114,8 +116,7 @@ public function query(QueryBuilder $builder): QueryDataTable
114116
*/
115117
public function eloquent(EloquentBuilder $builder): EloquentDataTable
116118
{
117-
/** @var string $dataTable */
118-
$dataTable = config('datatables.engines.eloquent');
119+
$dataTable = Config::string('datatables.engines.eloquent');
119120

120121
$this->validateDataTable($dataTable, EloquentDataTable::class);
121122

@@ -131,8 +132,7 @@ public function eloquent(EloquentBuilder $builder): EloquentDataTable
131132
*/
132133
public function collection($collection): CollectionDataTable
133134
{
134-
/** @var string $dataTable */
135-
$dataTable = config('datatables.engines.collection');
135+
$dataTable = Config::string('datatables.engines.collection');
136136

137137
$this->validateDataTable($dataTable, CollectionDataTable::class);
138138

src/DataTablesServiceProvider.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace Yajra\DataTables;
44

5+
use Illuminate\Support\Facades\Config;
56
use Illuminate\Support\ServiceProvider;
67
use Illuminate\Support\Str;
7-
use Yajra\DataTables\Utilities\Config;
8+
use Yajra\DataTables\Utilities\Config as DataTablesConfig;
89
use Yajra\DataTables\Utilities\Request;
910

1011
class DataTablesServiceProvider extends ServiceProvider
@@ -27,7 +28,7 @@ public function register()
2728

2829
$this->app->singleton('datatables.request', fn () => new Request);
2930

30-
$this->app->singleton('datatables.config', Config::class);
31+
$this->app->singleton('datatables.config', DataTablesConfig::class);
3132
}
3233

3334
/**
@@ -37,7 +38,7 @@ public function register()
3738
*/
3839
public function boot()
3940
{
40-
$engines = (array) config('datatables.engines');
41+
$engines = Config::array('datatables.engines', []);
4142
foreach ($engines as $engine => $class) {
4243
$engine = Str::camel($engine);
4344

src/Processors/DataProcessor.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Contracts\Support\Htmlable;
66
use Illuminate\Support\Arr;
7+
use Illuminate\Support\Facades\Config;
78
use Yajra\DataTables\Contracts\Formatter;
89
use Yajra\DataTables\Utilities\Helper;
910

@@ -67,7 +68,7 @@ public function __construct(protected iterable $results, array $columnDef, prote
6768
public function process($object = false): array
6869
{
6970
$this->output = [];
70-
$indexColumn = config('datatables.index_column', 'DT_RowIndex');
71+
$indexColumn = Config::string('datatables.index_column', 'DT_RowIndex');
7172

7273
foreach ($this->results as $row) {
7374
$data = Helper::convertToArray($row, ['hidden' => $this->makeHidden, 'visible' => $this->makeVisible, 'ignore_getters' => $this->ignoreGetters]);

src/Utilities/Helper.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Contracts\Support\Arrayable;
88
use Illuminate\Support\Arr;
99
use Illuminate\Support\Facades\Blade;
10+
use Illuminate\Support\Facades\Config;
1011
use Illuminate\Support\Str;
1112
use ReflectionFunction;
1213
use ReflectionMethod;
@@ -18,8 +19,11 @@ class Helper
1819
*/
1920
public static function includeInArray(array $item, array $array): array
2021
{
22+
/** @var int|string $itemName */
23+
$itemName = is_int($item['name']) || is_string($item['name']) ? $item['name'] : (string) $item['name'];
24+
2125
if (self::isItemOrderInvalid($item, $array)) {
22-
return array_merge($array, [$item['name'] => $item['content']]);
26+
return array_merge($array, [$itemName => $item['content']]);
2327
}
2428

2529
$count = 0;
@@ -36,7 +40,7 @@ public static function includeInArray(array $item, array $array): array
3640
$count++;
3741
}
3842

39-
return array_merge($first, [$item['name'] => $item['content']], $last);
43+
return array_merge($first, [$itemName => $item['content']], $last);
4044
}
4145

4246
/**
@@ -354,8 +358,7 @@ public static function isJavascript(string|array|object|null $value, string $key
354358
return false;
355359
}
356360

357-
/** @var array $callbacks */
358-
$callbacks = config('datatables.callback', ['$', '$.', 'function']);
361+
$callbacks = Config::array('datatables.callback', ['$', '$.', 'function']);
359362

360363
if (Str::startsWith($key, 'language.')) {
361364
return false;

0 commit comments

Comments
 (0)