Skip to content

Commit a7498ef

Browse files
committed
refactor: enhance key retrieval logic for array manipulations across multiple classes
1 parent 9fa0293 commit a7498ef

File tree

5 files changed

+29
-24
lines changed

5 files changed

+29
-24
lines changed

src/CollectionDataTable.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,8 @@ private function revertIndexColumn($mDataSupport): void
191191
$start = $this->request->start();
192192

193193
$this->collection->transform(function ($data) use ($index, &$start) {
194-
$data[$index] = ++$start;
194+
$indexKey = is_string($index) || is_int($index) ? $index : 0;
195+
$data[$indexKey] = ++$start;
195196

196197
return $data;
197198
});

src/DataTableAbstract.php

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

441440
return $this;

src/DataTables.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
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;
87
use Illuminate\Support\Traits\Macroable;
98
use Yajra\DataTables\Exceptions\Exception;
10-
use Yajra\DataTables\Utilities\Config as DataTablesConfig;
9+
use Yajra\DataTables\Utilities\Config;
1110
use Yajra\DataTables\Utilities\Request;
1211

1312
class DataTables
@@ -43,15 +42,17 @@ public static function of($source)
4342
*/
4443
public static function make($source)
4544
{
46-
$engines = Config::array('datatables.engines', []);
47-
$builders = Config::array('datatables.builders', []);
45+
$engines = (array) config('datatables.engines');
46+
$builders = (array) config('datatables.builders');
4847

4948
$args = func_get_args();
5049
foreach ($builders as $class => $engine) {
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'];
50+
if (is_string($class) && class_exists($class) && $source instanceof $class) {
51+
$engineClass = is_string($engine) && isset($engines[$engine]) ? $engines[$engine] : null;
52+
if ($engineClass === null) {
53+
continue;
54+
}
55+
$callback = [$engineClass, 'create'];
5556

5657
if (is_callable($callback)) {
5758
/** @var \Yajra\DataTables\DataTableAbstract $instance */
@@ -90,7 +91,7 @@ public function getRequest(): Request
9091
/**
9192
* Get config instance.
9293
*/
93-
public function getConfig(): DataTablesConfig
94+
public function getConfig(): Config
9495
{
9596
return app('datatables.config');
9697
}
@@ -102,7 +103,8 @@ public function getConfig(): DataTablesConfig
102103
*/
103104
public function query(QueryBuilder $builder): QueryDataTable
104105
{
105-
$dataTable = Config::string('datatables.engines.query');
106+
/** @var string $dataTable */
107+
$dataTable = config('datatables.engines.query');
106108

107109
$this->validateDataTable($dataTable, QueryDataTable::class);
108110

@@ -116,7 +118,8 @@ public function query(QueryBuilder $builder): QueryDataTable
116118
*/
117119
public function eloquent(EloquentBuilder $builder): EloquentDataTable
118120
{
119-
$dataTable = Config::string('datatables.engines.eloquent');
121+
/** @var string $dataTable */
122+
$dataTable = config('datatables.engines.eloquent');
120123

121124
$this->validateDataTable($dataTable, EloquentDataTable::class);
122125

@@ -132,7 +135,8 @@ public function eloquent(EloquentBuilder $builder): EloquentDataTable
132135
*/
133136
public function collection($collection): CollectionDataTable
134137
{
135-
$dataTable = Config::string('datatables.engines.collection');
138+
/** @var string $dataTable */
139+
$dataTable = config('datatables.engines.collection');
136140

137141
$this->validateDataTable($dataTable, CollectionDataTable::class);
138142

src/Processors/DataProcessor.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ public function process($object = false): array
7979
$value = $this->removeExcessColumns($value);
8080

8181
if ($this->includeIndex) {
82-
$value[$indexColumn] = ++$this->start;
82+
$indexKey = is_string($indexColumn) ? $indexColumn : 'DT_RowIndex';
83+
$value[$indexKey] = ++$this->start;
8384
}
8485

8586
$this->output[] = $object ? $value : $this->flatten($value);

src/Utilities/Helper.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use Illuminate\Contracts\Support\Arrayable;
88
use Illuminate\Support\Arr;
99
use Illuminate\Support\Facades\Blade;
10-
use Illuminate\Support\Facades\Config;
1110
use Illuminate\Support\Str;
1211
use ReflectionFunction;
1312
use ReflectionMethod;
@@ -19,11 +18,11 @@ class Helper
1918
*/
2019
public static function includeInArray(array $item, array $array): array
2120
{
22-
/** @var int|string $itemName */
23-
$itemName = is_int($item['name']) || is_string($item['name']) ? $item['name'] : (string) $item['name'];
24-
21+
$itemName = isset($item['name']) && is_string($item['name']) ? $item['name'] : '';
22+
$itemContent = $item['content'] ?? null;
23+
2524
if (self::isItemOrderInvalid($item, $array)) {
26-
return array_merge($array, [$itemName => $item['content']]);
25+
return array_merge($array, [$itemName => $itemContent]);
2726
}
2827

2928
$count = 0;
@@ -40,7 +39,7 @@ public static function includeInArray(array $item, array $array): array
4039
$count++;
4140
}
4241

43-
return array_merge($first, [$itemName => $item['content']], $last);
42+
return array_merge($first, [$itemName => $itemContent], $last);
4443
}
4544

4645
/**
@@ -358,7 +357,8 @@ public static function isJavascript(string|array|object|null $value, string $key
358357
return false;
359358
}
360359

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

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

0 commit comments

Comments
 (0)