An open API service indexing awesome lists of open source software.

https://github.com/e-commit/paginator


https://github.com/e-commit/paginator

Last synced: 10 months ago
JSON representation

Awesome Lists containing this project

README

          

# Paginator

Create a paginator.

![Tests](https://github.com/e-commit/paginator/workflows/Tests/badge.svg)

## Installation ##

To install paginator with Composer just run :

```bash
$ composer require ecommit/paginator
```

## Usage ##

```php
use Ecommit\Paginator\ArrayPaginator;

//Create a paginator
$paginator = new ArrayPaginator([
//Options
'page' => 1,
'max_per_page' => 100,
'data' => ['val1', 'val2', 'val3'],
//Or with an ArrayIterator
//'data' => new \ArrayIterator(['val1', 'val2', 'val3']),
]);

$totalPages = $paginator->getLastPage();
$countRows = \count($paginator);
foreach ($paginator as $result) {
//...
}
```

### Available options

| Option | Type | Required | Default value | Description |
| --- | --- | --- | --- | --- |
| **page** | Integer | No | 1 | Current page |
| **max_per_page** | Integer | No | 100 | Max elements per page |
| **data** | Array or ArrayIterator | Yes | |


  • If `count` option is null : All data (of all pages)

  • If `count` option is not null : Only the data to display on the current page

|
| **count** | Integer or null | No | Null | *You can use this option when the data volume is too large.* If the value is not null :

  • It must equal the total number of results

  • The `data` option must contain only the data to display on the current page

|

### Available methods

See [API documentation](src/PaginatorInterface.php)

## License ##

This librairy is under the MIT license. See the complete license in *LICENSE* file.