In an app you have to deal with tables. This library gives you some handy tools to deal with them.
Via Composer
$ composer require midorikocak/tabletools
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;
}
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);
If your data is already in memory, you can use ArrayTable
.
$data = getArrayFromCsv('tests/small-name.csv');
$arrayTable = new ArrayTable($data);
If you deal with CSV files, you can import the data in a CsvTable
.
$csvTable = new CsvTable('tests/small-name.csv');
Get only specified columns.
$columns = $this->arrayTable->columns(['first_name', 'last_name'])->run();
Filters rows other than with specified value.
$filtered = $this->arrayTable->filter('username', 'midorikocak')->run();
Sort table by specified column.
$sorted = $this->arrayTable->sort('username', 'DESC')->run();
Search table by value.
$found = $this->arrayTable->search('username', 'kocak')->run();
Retrieve a range of items.
// Retrieves 10 items after 30th
$range = $this->arrayTable->range(30, 10)->run();
Retrieve a page of items.
// Retrieves 50 more items after first 50 item.
$page = $this->arrayTable->paginate(2, 50)->run();
Please see CHANGELOG for more information on what has changed recently.
$ composer test
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email mtkocak@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.