4
4
5
5
class Paginator
6
6
{
7
- private $ callable ;
7
+ private $ request ;
8
8
private $ params ;
9
9
private $ pagination_cache = [];
10
10
private const FIRST_PAGE = "FIRST_PAGE " ;
11
11
12
- public function __construct (callable $ callable , array $ params = [])
12
+ public function __construct (callable $ request , array $ params = [])
13
13
{
14
- $ this ->callable = $ callable ;
14
+ $ this ->request = $ request ;
15
15
$ this ->params = $ params ;
16
16
}
17
17
18
18
public function firstPage (): array
19
19
{
20
- $ callable = $ this ->callable ;
20
+ $ request = $ this ->request ;
21
21
$ params = $ this ->params ;
22
22
23
23
$ params ["on_response " ] = fn ($ response ) => $ this ->cachePagination (
24
24
$ response ,
25
25
self ::FIRST_PAGE
26
26
);
27
27
28
- $ data = $ callable ($ params );
28
+ $ data = $ request ($ params );
29
29
30
30
return [$ data , $ this ->pagination_cache [self ::FIRST_PAGE ]];
31
31
}
32
32
33
33
public function nextPage (string $ next_page_cursor ): array
34
34
{
35
- $ callable = $ this ->callable ;
35
+ if ($ next_page_cursor === null ) {
36
+ throw new \InvalidArgumentException (
37
+ "Cannot get the next page with a null next_page_cursor "
38
+ );
39
+ }
40
+
41
+ $ request = $ this ->request ;
36
42
$ params = $ this ->params ;
37
43
38
44
$ params ["page_cursor " ] = $ next_page_cursor ;
@@ -41,7 +47,7 @@ public function nextPage(string $next_page_cursor): array
41
47
$ next_page_cursor
42
48
);
43
49
44
- $ data = $ callable ($ params );
50
+ $ data = $ request ($ params );
45
51
46
52
return [$ data , $ this ->pagination_cache [$ next_page_cursor ]];
47
53
}
0 commit comments