-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Describe the bug
In your code and contained docblocks you use e.g. (from file DataTable.php)
namespace Hermawan\DataTables;
/**
* Make a DataTable instance from builder.
*
* Builder from CodeIgniter Query Builder
* @param Builder $builder
*/
public static function of($builder)
{
return new self($builder);
}
/**
* Add Searchable columns
* @param String|Array
*/
public function addSearchableColumns($columns)
{
$this->columnDefs->addSearchable($columns);
return $this;
}This means that the in the static of function, the $builder argument is considered to be of type Hermawan\DataTables\Builder.
In the function addSearchableColumns, the $columns argument is not a regular, native php string (as you probably intend) but a Hermawan\DataTables\String.
Etc. etc.
However, since the builder is generated based off Codeigniter code, it is in fact of type CodeIgniter\Database\BaseBuilder. And what we pass to addSearchableColumns is a native string, etc.
This discrepancy is highlighted by my code linter all the time, all over the place and I believe it should be fixed. The solution would be, continuing with the example at from the top:
namespace Hermawan\DataTables;
/**
* Make a DataTable instance from builder.
*
* Builder from CodeIgniter Query Builder
* @param \CodeIgniter\Database\BaseBuilder $builder // <<<< note the change
*/
public static function of($builder)
{
return new self($builder);
}
/**
* Add Searchable columns
* @param string|array // <<<< note the lowercase
*/
public function addSearchableColumns($columns)
{
$this->columnDefs->addSearchable($columns);
return $this;
}I'm no expert in namespace, but I believe this would be more correct? It stops all the linter errors in any case...
Thanks!
Version (please complete the following information):
- PHP Version: 8.3
- CodeIgniter version: 4.4.5
- Library version: 0.7.1