midorikocak / tabletools
In an app you have to deal with tables. This library gives you some handy tools to deal with them.
Requires
- php: ~7.4
- ext-iconv: *
- ext-json: *
- ext-pdo: *
- eftec/bladeone: ^3.34
- league/csv: ^9.5
- midorikocak/arraytools: ^1.0
- midorikocak/nanodb: ^1.1.3
Requires (Dev)
- guzzlehttp/guzzle: ^6.5
- opsway/psr12-strict-coding-standard: ^0.3.0
- phpunit/phpunit: >=8.5
- squizlabs/php_codesniffer: ^3.5
- symfony/process: ^5.0
This package is not auto-updated.
Last update: 2024-11-06 21:56:29 UTC
README
In an app you have to deal with tables. This library gives you some handy tools to deal with them.
Install
Via Composer
$ composer require midorikocak/tabletools
Usage
You can access and operate 2 dimensional associative data using 3 kind of tables. DatabaseTable
,
ArrayTable
,CsvTable
.
Most common operations with tables are defined in TableInterface
.
<?php declare(strict_types=1); namespace midorikocak\tabletools; interface TableInterface { public function sort(string $key, $order = 'ASC'): self; public function columns($keys): self; public function filter(string $key, $value): self; public function search(string $key, $value): self; public function range(int $offset, ?int $limit = null): self; public function paginate(int $page = 0, int $pageSize = 10): self; public function run(): array; }
DatabaseTable
To use the DatabaseTable
class, inject it with an object that implements midorikocak/nanodb/DatabaseInterface
.
Or a simple PDO wrapper with same methods)
$pdo = new PDO(); $db = new \midorikocak\nanodb\Database($pdo); $databaseTable = new \midorikocak\tabletools\DatabaseTable($db);
ArrayTable
If your data is already in memory, you can use ArrayTable
.
$data = getArrayFromCsv('tests/small-name.csv'); $arrayTable = new ArrayTable($data);
CsvTable
If you deal with CSV files, you can import the data in a CsvTable
.
$csvTable = new CsvTable('tests/small-name.csv');
Columns
Get only specified columns.
$columns = $this->arrayTable->columns(['first_name', 'last_name'])->run();
Filter
Filters rows other than with specified value.
$filtered = $this->arrayTable->filter('username', 'midorikocak')->run();
Sort
Sort table by specified column.
$sorted = $this->arrayTable->sort('username', 'DESC')->run();
Search
Search table by value.
$found = $this->arrayTable->search('username', 'kocak')->run();
Range
Retrieve a range of items.
// Retrieves 10 items after 30th $range = $this->arrayTable->range(30, 10)->run();
Paginate
Retrieve a page of items.
// Retrieves 50 more items after first 50 item. $page = $this->arrayTable->paginate(2, 50)->run();
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email mtkocak@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.