PaginatorFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 43
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A make() 0 6 1
A makeCursor() 0 4 1
1
<?php
2
3
namespace Flugg\Responder\Pagination;
4
5
use Flugg\Responder\Contracts\Pagination\PaginatorFactory as PaginatorFactoryContract;
6
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
7
use League\Fractal\Pagination\Cursor;
8
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
9
use League\Fractal\Pagination\PaginatorInterface;
10
11
/**
12
 * A factory class for making Fractal paginator adapters from a Laravel paginator.
13
 *
14
 * @package flugger/laravel-responder
15
 * @author  Alexander Tømmerås <[email protected]>
16
 * @license The MIT License
17
 */
18
class PaginatorFactory implements PaginatorFactoryContract
19
{
20
    /**
21
     * A list of query string values appended to the paginator links.
22
     *
23
     * @var array
24
     */
25
    protected $parameters;
26
27
    /**
28
     * Construct the factory class.
29
     *
30
     * @param array $parameters
31
     */
32 57
    public function __construct(array $parameters)
33
    {
34 57
        $this->parameters = $parameters;
35 57
    }
36
37
    /**
38
     * Make a Fractal paginator adapter from a Laravel paginator.
39
     *
40
     * @param  \Illuminate\Contracts\Pagination\LengthAwarePaginator $paginator
41
     * @return \League\Fractal\Pagination\PaginatorInterface
42
     */
43 2
    public function make(LengthAwarePaginator $paginator): PaginatorInterface
44
    {
45 2
        $paginator->appends($this->parameters);
46
47 2
        return new IlluminatePaginatorAdapter($paginator);
48
    }
49
50
    /**
51
     * Make a Fractal paginator adapter from a Laravel paginator.
52
     *
53
     * @param  \Flugg\Responder\Pagination\CursorPaginator $paginator
54
     * @return \League\Fractal\Pagination\Cursor
55
     */
56 1
    public function makeCursor(CursorPaginator $paginator): Cursor
57
    {
58 1
        return new Cursor($paginator->cursor(), $paginator->previous(), $paginator->next(), $paginator->get()->count());
0 ignored issues
show
Bug introduced by
It seems like $paginator->previous() targeting Flugg\Responder\Paginati...orPaginator::previous() can also be of type integer or string; however, League\Fractal\Pagination\Cursor::__construct() does only seem to accept null, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
59
    }
60
}
61