DefaultBuilder.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace Elastica\ResultSet;
  3. use Elastica\Query;
  4. use Elastica\Response;
  5. use Elastica\Result;
  6. use Elastica\ResultSet;
  7. class DefaultBuilder implements BuilderInterface
  8. {
  9. /**
  10. * Builds a ResultSet for a given Response.
  11. *
  12. * @param Response $response
  13. * @param Query $query
  14. *
  15. * @return ResultSet
  16. */
  17. public function buildResultSet(Response $response, Query $query)
  18. {
  19. $results = $this->buildResults($response);
  20. $resultSet = new ResultSet($response, $query, $results);
  21. return $resultSet;
  22. }
  23. /**
  24. * Builds individual result objects.
  25. *
  26. * @param Response $response
  27. *
  28. * @return Result[]
  29. */
  30. private function buildResults(Response $response)
  31. {
  32. $data = $response->getData();
  33. $results = [];
  34. if (!isset($data['hits']['hits'])) {
  35. return $results;
  36. }
  37. foreach ($data['hits']['hits'] as $hit) {
  38. $results[] = new Result($hit);
  39. }
  40. return $results;
  41. }
  42. }