1: <?php
2:
3: namespace Scopus\Response;
4:
5: class SearchResults
6: {
7: /** @var array */
8: protected $data;
9:
10: /** @var SearchLinks */
11: protected $links;
12:
13: /** @var Entry[] */
14: protected $entries;
15:
16: public function __construct(array $data)
17: {
18: $this->data = $data;
19: }
20:
21: public function getTotalResults()
22: {
23: return isset($this->data['opensearch:totalResults']) ? $this->data['opensearch:totalResults'] : null;
24: }
25:
26: public function getStartIndex()
27: {
28: return isset($this->data['opensearch:startIndex']) ? $this->data['opensearch:startIndex'] : null;
29: }
30:
31: public function getItemsPerPage()
32: {
33: return isset($this->data['opensearch:itemsPerPage']) ? $this->data['opensearch:itemsPerPage'] : null;
34: }
35:
36: public function getQuery()
37: {
38: return isset($this->data['opensearch:Query']) ? $this->data['opensearch:Query'] : null;
39: }
40:
41: public function getNextCursor()
42: {
43: return isset($this->data['cursor']['@next']) ? $this->data['cursor']['@next'] : null;
44: }
45:
46: public function getLinks()
47: {
48: if (!isset($this->data['link'])) {
49: return null;
50: }
51:
52: return $this->links ?? $this->links = new SearchLinks($this->data['link']);
53: }
54:
55: /**
56: * @return Entry[]
57: */
58: public function getEntries(): array
59: {
60: if (isset($this->data['entry'])) {
61: return $this->entries ?? $this->entries = array_map(function ($entry) {
62: return new Entry($entry);
63: }, $this->data['entry']);
64: }
65:
66: return [];
67: }
68:
69: public function countEntries()
70: {
71: return count($this->getEntries());
72: }
73: }
74: