SpanOr.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace Elastica\Query;
  3. use Elastica\Exception\InvalidException;
  4. /**
  5. * SpanOr query.
  6. *
  7. * @author Marek Hernik <marek.hernik@gmail.com>
  8. *
  9. * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html
  10. */
  11. class SpanOr extends AbstractSpanQuery
  12. {
  13. /**
  14. * Constructs a SpanOr query object.
  15. *
  16. * @param AbstractSpanQuery[] $clauses OPTIONAL
  17. */
  18. public function __construct($clauses = [])
  19. {
  20. if (!empty($clauses)) {
  21. foreach ($clauses as $clause) {
  22. if (!is_subclass_of($clause, AbstractSpanQuery::class)) {
  23. throw new InvalidException(
  24. 'Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery'
  25. );
  26. }
  27. }
  28. }
  29. $this->setParams(['clauses' => $clauses]);
  30. }
  31. /**
  32. * Add clause part to query.
  33. *
  34. * @param AbstractSpanQuery $clause
  35. *
  36. * @throws InvalidException If not valid query
  37. *
  38. * @return $this
  39. */
  40. public function addClause($clause)
  41. {
  42. if (!is_subclass_of($clause, AbstractSpanQuery::class)) {
  43. throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery');
  44. }
  45. return $this->addParam('clauses', $clause);
  46. }
  47. }